3

我有一个这样的故事板:

  1. Navigation Controller --- 连接到 ---> View A ---> table cell segue ---> View B
  2. 独立视图 C,也就是说,故事板中的任何其他视图都没有连接到它的 segue。

我点击视图 A 中的一个单元格,它会自动执行与视图 B 的 segue。在视图 B 中,显示视图并触发应用程序事件后,它会自动关闭自身并推送视图 C 的实例,执行如下操作:

视图 B:

- (void)someEvent
{
    ViewCController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"ViewC"];
    [self.navigationController pushViewController:controller animated:YES];
}

这一切都很好,视图 C 突然出现。但是,当我点击视图 C 导航栏上的“返回”按钮时,我希望它一直弹回视图 A,而不是视图 B。我试过这个:

视图 C:

- (void)viewWillDisappear:(BOOL)animated
{
     [super viewWillDisappear:animated];
     [self.navigationController popToRootViewControllerAnimated:animated];
}

这几乎可以按预期工作,因为视图 ​​C 被关闭,视图 A 绕过视图 B 重新返回。问题是,视图 A 中的导航栏仍然认为它更深一层,因为它仍然显示“返回”按钮而不是查看 A。我必须再次点击“返回”按钮才能显示正确的按钮。

我错过了什么?

4

2 回答 2

1

在 View C 中分配您自己的 barButtonItem 并将其放入self.navigationItem.leftBarButtonItem以替换后退按钮并让此按钮的操作执行[self.navigationController popToRootViewControllerAnimated:YES]

于 2013-01-29T20:57:35.587 回答
1

我不确定你能做到这一点,或者你应该这样做。后退按钮有一个特定的目的——返回到前一个视图控制器,我认为你不应该尝试颠覆它(它的标题将指向那个,而不是你的第一个)。最好在 viewC 的导航栏中添加另一个条形按钮,并将其连接到执行 popToRootViewController 的代码。

于 2013-01-29T20:38:51.337 回答