【问题标题】:How to dismiss a NavigationController in Storyboard?如何在 Storyboard 中关闭 NavigationController?
【发布时间】:2012-09-04 01:07:01
【问题描述】:

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

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

所以要解决这个问题:

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

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

提前感谢您的帮助!

【问题讨论】:

  • 你的意思是dismissModalViewController而不是dismissViewController
  • 我正在使我的应用程序与 iOS 6 兼容,dismissModalViewController 已弃用。
  • 您好,当您将 segue 建模为导航控制器时,您如何在新导航控制器中的新视图控制器中获得视图控制器中原始控制器的引用?因为当我做 prepareforsegue 和 segue.destinationViewController 它返回导航控制器而不是视图控制器

标签: ios storyboard navigationcontroller


【解决方案1】:

当您拨打[self dismissViewControllerAnimated:YES completion:nil] 时,self 是谁?

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

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

【讨论】:

  • 感谢您指出这些属性,但不幸的是它仍然无法正常工作。这是我尝试过的。从地图视图上的按钮,我将代码更改为[[[self navigationController] presentingViewController] dismissViewControllerAnimated:YES completion:nil],但这不起作用。我也试过[[self navigationController] dismissViewControllerAnimated:YES completion:nil],但也没有用。有什么建议吗?
  • 很抱歉造成混乱,显然我的函数在按下按钮时没有被调用,即使它之前工作过 -_- 要清除,所有三个选项都可以工作 [[self presentingViewController] dismissViewControllerAnimated:YES completion:nil] 或 @987654331 @ 或最简单的 [self dismissViewControllerAnimated:YES completion:nil] 仍然通过导航控制器适当地关闭模式视图。感谢您的帮助,我又学到了一些技巧:D
猜你喜欢
  • 2012-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-22
  • 1970-01-01
  • 2013-11-04
  • 1970-01-01
相关资源
最近更新 更多