0

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

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

以下是我的代码,

//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];

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

示例代码将有更好的帮助。

4

3 回答 3

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
于 2009-05-01T02:26:34.283 回答
0

谢谢回复。

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

使用后退按钮我来到了主视图。但是在我无法再次导航之后,因为它在执行以下行时崩溃了

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

这里可能有什么问题?

维沙尔 N

于 2009-05-02T01:06:06.653 回答
0

我遇到了与此类似的问题,它在第二次尝试时在 presentModalViewController: 中崩溃。问题是由[self becomeFirstResponder]在我呈现的第一个 UIViewController 中调用 viewDidAppear: 引起的,但我未能[self resignFirstResponder]在 viewWillDisappear:中调用。

于 2010-01-29T17:24:23.603 回答