我有两个表视图控制器,它们通过Storyboard中的“segues”相互连接。然后我切断了“segues”并插入另一个控制器。现在连接不是通过“segues”。要连接我正在使用代码的视图:
UIStoryboard *storyboard = self.storyboard;
OptionsViewController *options = [storyboard instantiateViewControllerWithIdentifier:@"OptionsViewController"]
[self.navigationController pushViewController:options animated:YES];
现在当我点击导航栏中的“后退”按钮时,我的程序崩溃了。如何解决?
控制台显示(在我按下“后退”按钮之前加载视图后。):“嵌套推送动画可能导致导航栏损坏” “在意外状态下完成导航转换。导航栏子视图树可能已损坏。”
在我按下“后退”按钮后:“以NSException类型的未捕获异常终止”
导航控制器是我的故事板中的初始控制器,但视图之间没有相互连接。
修复:我刚刚在代码末尾设置了“动画:否”。
答案 0 :(得分:0)
尝试将行修改为
[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];
}
您可以使用样式来设置所需的按钮样式。
答案 1 :(得分:0)
检查pushViewController
之前调用viewDidAppear
是否安全。所以你应该根据它创建你的代码。