-1

下面是我的导航控制器的层次结构

MainViewController
      |
      |
      DetailViewController

然后我在 DetailViewController 上执行以下操作

[self presentViewController:reminderController animated:YES completion:nil];

导航到 ReminderViewController 后,有时我会这样做

[self dismissViewControllerAnimated:YES completion:nil];

但是,它让我回到 MainViewController 而不是 DetailViewController

这很奇怪。关于这个问题的任何想法......

编辑:

presentViewController: reminderController animated: completion:在 DetailViewController 上做的原因是因为提醒控制器用于发送提醒。就像 goole 应用程序或其他应用程序一样,在发送 sth 时,我们使用的是 presentViewController。

4

2 回答 2

2

以下是有关UIViewController该类的文档示例:

呈现视图控制器负责关闭它呈现的视图控制器。如果您在呈现的视图控制器本身上调用此方法,它会自动将消息转发到呈现的视图控制器。

如果您连续呈现多个视图控制器,从而构建一个呈现视图控制器的堆栈,则在堆栈中较低的视图控制器上调用此方法会解除其直接子视图控制器以及堆栈上该子视图控制器上方的所有视图控制器。发生这种情况时,只有最顶层的视图会以动画方式消失;任何中间视图控制器都简单地从堆栈中删除。最顶层的视图使用其模态转换样式被解除,这可能与堆栈中其他视图控制器使用的样式不同。

因此,我认为您应该首先使用 segue 来推送您的DetailViewController,然后呈现reminderController模态,您以后可以在不关闭的dismissViewControllerAnimated:completion:情况下关闭它DetailViewController

于 2013-03-01T19:48:16.660 回答
-1

而不是使用dismissViewController:animated:使用

[self.navigationController popViewControllerAnimated:YES];

dismissViewController:animated删除其中的所有UIViewControllers。

如果您阅读 UIViewController 和 UINavigationController 参考资料,您会省去很多麻烦。两次;)

有关更多详细信息,请参阅此帖子

于 2013-03-01T19:39:42.040 回答