单击导航栏中的“返回”按钮时如何设置自定义视图控制器?
Posted
技术标签:
【中文标题】单击导航栏中的“返回”按钮时如何设置自定义视图控制器?【英文标题】:How to set a custom View Controller when clicking a "Back" button in Navigation Bar? 【发布时间】:2014-01-03 05:41:42 【问题描述】:我有两个 Table View Controller,它们通过 Storyboard 中的“segues”相互连接。然后我剪掉了“segues”并插入了另一个控制器。现在连接不是通过“segues”。要连接我正在使用代码的视图:
UIStoryboard *storyboard = self.storyboard;
OptionsViewController *options = [storyboard instantiateViewControllerWithIdentifier:@"OptionsViewController"]
[self.navigationController pushViewController:options animated:YES];
现在,当我单击导航栏中的“返回”按钮时,我的程序崩溃了。如何解决?
控制台显示(视图加载后,在我按下“返回”按钮之前。):“嵌套推送动画可能导致导航栏损坏” “在意外状态下完成导航转换。导航栏子视图树可能已损坏。”
按下“返回”按钮后:“以未捕获的 NSException 类型异常终止”
Navigation Controller 是我故事板中的初始控制器,但 Views 没有相互连接。
已修复:我刚刚在代码末尾设置了“动画:否”。
【问题讨论】:
optionsViewController
是什么?
当您的应用程序崩溃时您在控制台中得到什么?有什么错误吗??
我认为你的问题是 uinavigationcontroller 正在被释放。
将视图控制器设为保留/强属性
您可能已通过将动画设置为 NO 来修复崩溃,但您收到“嵌套推送动画可能导致导航栏损坏”消息的事实意味着您在转换中做错了 - - 通常该错误意味着您正在尝试一次进行 2 次转换。
【参考方案1】:
检查在viewDidAppear
之前调用pushViewController
是不安全的。所以你应该根据那个来创建你的代码。
【讨论】:
【参考方案2】:尝试将行修改为
[self.navigationController pushViewController:options animated:YES];
更新
如果您不关心正常的后退按钮,请尝试以下代码。
- (void) viewDidLoad
// ADD BELOW CODE IN viewDidLoad ALONG WITH REST OF YOUR CODE
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@”back”
style:UIBarButtonItemStyleBordered target:self action:@selector(backBarButton:)];
self.navigationItem.leftBarButtonItem = backButton;
- (void) backBarButton:(id)sender
[self.navigationController popViewControllerAnimated:YES];
您可以使用样式来设置所需的按钮样式。
【讨论】:
其实我的代码是一样的。我只是在打字时犯了一个错误。以上是关于单击导航栏中的“返回”按钮时如何设置自定义视图控制器?的主要内容,如果未能解决你的问题,请参考以下文章