首页 文章

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

提问于
浏览
0

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

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

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

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

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

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

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

2 回答

  • 0

    viewDidAppear 不安全之前检查是否要调用 pushViewController . 所以你应该根据它创建你的代码 .

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

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

相关问题