2

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

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

所以要解决这个问题:

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

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

在此先感谢您的帮助!

4

1 回答 1

3

self你打电话的时候是谁[self dismissViewControllerAnimated:YES completion:nil]

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

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

于 2012-09-04T05:50:10.470 回答