单击导航栏中的“后退”按钮时如何设置自定义视图控制器?

时间:2014-01-03 05:41:43

标签: ios iphone objective-c

我有两个表视图控制器,它们通过Storyboard中的“segues”相互连接。然后我切断了“segues”并插入另一个控制器。现在连接不是通过“segues”。要连接我正在使用代码的视图:

UIStoryboard *storyboard = self.storyboard;
OptionsViewController *options = [storyboard instantiateViewControllerWithIdentifier:@"OptionsViewController"]
[self.navigationController pushViewController:options animated:YES];

现在当我点击导航栏中的“后退”按钮时,我的程序崩溃了。如何解决?

控制台显示(在我按下“后退”按钮之前加载视图后。):“嵌套推送动画可能导致导航栏损坏”                “在意外状态下完成导航转换。导航栏子视图树可能已损坏。”

在我按下“后退”按钮后:“以NSException类型的未捕获异常终止”

导航控制器是我的故事板中的初始控制器,但视图之间没有相互连接。

修复:我刚刚在代码末尾设置了“动画:否”。

2 个答案:

答案 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是否安全。所以你应该根据它创建你的代码。