如何解决Storyboard中的NavigationController?

时间:2012-09-04 01:07:01

标签: ios storyboard navigationcontroller

我到处寻找这个,所以作为最后的手段,我想我应该问这个问题。

我在XCode中使用Storyboard并且有一个导航控制器作为我的初始视图。此导航控制器的根视图是表视图。在此表视图中,我在导航栏中有一个按钮,可以通过模态segue将视图水平翻转到导航控制器。该控制器的根视图是我的地图视图。现在,当我想使用[self dismissViewControllerAnimated:YES completion:nil]关闭此地图视图时,它不起作用。如果我取出导航控制器,它会这样做。所以,我猜测dismissViewController正在传递给导航控制器,而没有做任何事情。我知道我可以为导航控制器实现一个类来处理调用并传递它,但除非绝对必要,否则我不想这样做。

所以要解决这个问题:

  1. 我需要一种方法,使用翻转水平动画在表格视图和地图视图之间切换,反之亦然。

  2. 我需要在两个视图中都有一个导航控制器,我可以是同一个,也可以是不同的。我似乎找不到使用相同方法的方法,因为任何转换都是推动而不会进行翻转水平转换。

  3. 提前感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

致电self时,[self dismissViewControllerAnimated:YES completion:nil]是谁?

此消息的接收者需要是视图控制器,它呈现您要关闭的模态视图控制器。如果你在呈现的视图控制器上调用它,或者(在容器视图控制器如UINavigationController的情况下,它管理的一个视图控制器),UIKit将尝试做正确的事情,但不会总是成功。

假设您引用的self是包含地图视图的视图控制器,您可以获取presentingViewController属性以获取应该调用dismissViewControllerAnimated:completion:的对象。 (如果您需要获取介于两者之间的导航控制器,请使用navigationController属性。)