单击导航栏中的"Back"按钮时如何设置自定义视图控制器?



我有两个表视图控制器,它们在故事板中通过"segues"相互连接。然后我剪掉了"segues"并插入了另一个控制器。现在的联系不是通过"segues"。为了连接视图,我正在使用代码:

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

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

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

在我按下"后退"按钮后:"终止,未捕获的NSException类型的异常"

导航控制器是情节提要中的初始控制器,但视图未相互连接。

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

检查在

viewDidAppear之前呼叫pushViewController是不安全的。因此,您应该根据该代码创建代码。

尝试将行修改为

[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];
}

您可以使用样式来设置所需的按钮样式。

最新更新