ORL*_*ORL 0 iphone objective-c ios
我对Objective-C和iPhone编程很新,所以如果这是一个新手问题,我很抱歉.我有一个简单的应用程序需要从一个视图到另一个视图.第一个视图是UIViewController.我在IB中设置了xib文件(即将一些按钮拖到窗口上)并连接所有按钮(这些按钮都可以工作).然后我创建了另一个xib文件和类(也是一个UIViewController)并将它们连接起来.在第一个视图中按下按钮时,我想加载第二个视图.这是应该推动视图的代码:
-(IBAction)createAccount:(id)sender{
CreateAccountViewController*acctView = [[CreateAccountViewController alloc] initWithNibName:@"CreateAccount" bundle:nil];
[self.navigationController pushViewController:acctView animated:YES];
[acctView release];
}
Run Code Online (Sandbox Code Playgroud)
但这没有任何作用.当我将print语句放在createAccount方法中时,那些是打印的(我可以多次单击该按钮并且它永远不会崩溃)但是从不推动acctView.当我打印出self.navigationController的值时,它返回null.它甚至更奇怪,因为如果我以模态方式呈现acctView,那么它的工作原理.
-(IBAction)createAccount:(id)sender{
CreateAccountViewController*acctView = [[CreateAccountViewController alloc] initWithNibName:@"CreateAccount" bundle:nil];
[self presentModalViewController:acctView animated:YES];
[acctView release];
Run Code Online (Sandbox Code Playgroud)
}
这工作得很好,但我不想以模态方式使用视图.我完全迷失在这里.在过去的几个小时里,我遇到过很多帖子,说要用UINavigationController做一些事情并将其挂钩到我的视线,但我该怎么做?任何帮助是极大的赞赏!谢谢.
您似乎还没有为您的应用创建UINavigationController.
最好的事情是从头开始使用新的Xcode项目,负责选择基于导航的应用程序.通过这种方式,您几乎可以获得为您设置的所有内容.
如果您不喜欢这种方法,可以通过编程方式创建UINavigationController.在这里,您可以找到相关的教程.
如果您更喜欢更直接的指示,那么它们是:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
MainPageDialog *overviewViewController = [[MainPageDialog alloc] initWithNibName:@"MainPage" bundle:nil];
self.navigation = [[[UINavigationController alloc] initWithRootController:overviewViewController] autorelease];
[overviewViewController release];
[window addSubview:[navigation view]];
[self.window makeKeyAndVisible];
return YES;
}
Run Code Online (Sandbox Code Playgroud)
这self.navigation是retainappDelegate中的ed属性.
编辑:
这个答案很旧,因此更新:
如果您使用的是ARC,那么您应该使用strong(vs. retain)属性,而您不需要autorelease;
如果您的目标是iOS> 4.0(上面的含义也暗示),您可以使用该rootViewController属性UIWindow并说:
MainPageDialog *overviewViewController = [[MainPageDialog alloc] initWithNibName:@"MainPage" bundle:nil];
self.window.rootViewController = [[[UINavigationController alloc] initWithRootController:overviewViewController] autorelease];
[overviewViewController release];
[window addSubview:[self.window.rootViewController view]];
[self.window makeKeyAndVisible];
Run Code Online (Sandbox Code Playgroud)
不需要任何navigation财产.
| 归档时间: |
|
| 查看次数: |
6906 次 |
| 最近记录: |