导航控制器第二次崩溃

时间:2009-05-01 01:24:53

标签: iphone uinavigationcontroller

我在我的应用程序中使用了一个导航控制器。我有一个主视图(使用主视图控制器)和几个选项视图。当在主视图的工具栏上单击按钮时,导航控制器将查看选项视图。

第一次一切正常。当我从导航控制器返回主视图并再次尝试转到选项视图(即导航控制器)时,我的应用程序崩溃了。

以下是我的代码,

//Jump to navigation controller from main view controller

optionsViewController *optionsView = [[optionsViewController alloc] initWithNibName:@"optionsView" bundle:nil];
navControllerSettings = [[UINavigationController alloc] initWithRootViewController:(UIViewController *) optionsView];
[self presentModalViewController:self.navControllerSettings animated:YES];

//Code to go back to main view from navigation controller

[self.navigationController dismissModalViewControllerAnimated:YES];

处理导航控制器的正确机制是什么?我是否需要释放/取消分配导航控制器或选项视图?

示例代码会有所帮助。

3 个答案:

答案 0 :(得分:0)

您的导航控制器只设置一次,然后从其堆栈中推送并弹出其他视图。

UINavigationController *navController = [[UINavigationController alloc] init];
UIViewController *yourMainViewController = [[yourMainViewControllerClass alloc] init];

// when you are ready to go to your options view
optionsViewController *optionsView = [[optionsViewController alloc] initWithNibName:@"optionsView" bundle:nil];

[navController pushViewController:optionsViewController animated:YES];

// the back button and the pop from the stack when it is hit is handled auto-magically for you

答案 1 :(得分:0)

感谢您的回复。

但我的应用程序架构是,我有一个主要视图,我在其中显示一些东西,并有工具栏。工具栏包含一个按钮,点击后,该导航控制器将被创建并显示在屏幕上。

使用后退按钮我来到主视图。但是在我执行下面的行

后,我再次无法继续导航

[self presentModalViewController:self.navControllerSettings animated:YES];

这可能是什么问题?

Vishal N

答案 2 :(得分:0)

我遇到了类似的问题,因为它在presentModalViewController中崩溃:第二次尝试。问题是由于我在viewDidAppear中调用[self becomeFirstResponder]:在我提出的第一个UIViewController中,但我没有在viewWillDisappear中调用[self resignFirstResponder]:。

相关问题