【问题标题】:Dismiss View Controller without cascading all the way to root View Controller关闭视图控制器而不级联到根视图控制器
【发布时间】:2013-06-11 02:01:23
【问题描述】:

我有以下 UI 元素(粗体标签):

根: ---------------------- UITabBarController (一) ---------------------- | ---------------------------------------------- 带有 UITableView 子视图的 UIViewController (B) ---------------------------------------------- | -------------------------- --------- UITableViewController (C) --> UIViewController (D) -------------------------- ---------

A 在其第一个标签中包含 B。当单击 B 中的 UITableViewCell 时,我正在使用 pushViewControllerAnimated 来显示 C,这很像向下钻取详细信息视图。最后,当单击 C 中的 UITableViewCell 时,我正在使用 presentViewControllerAnimatedCompletion 在弹出模式视图中显示 D

旁注:AD 上有一个 UINavigationController。

当点击 D 上的关闭按钮时,它会通过以下方式关闭模式:

[self.presentingViewController dismissViewControllerAnimated:YES completion:nil];

这成功地解除了模式,但它也退出了 C 一直回到 B。我想留在 C

有什么想法吗?

【问题讨论】:

  • 为什么在 A 和 D 上有导航控制器?根据您提供的描述,听起来您应该将 B 嵌入其中一个,而不是其他的。
  • A 有一个导航控制器,因为我想要一个标签栏和一个导航栏。我在 D 上添加了它,因为当我展示视图控制器时,导航栏又丢失了。

标签: ios objective-c


【解决方案1】:

我想你应该打电话:

[self dismissViewControllerAnimated:YES completion:nil];

试一试。我的猜测是基于 Apple 的文档:

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

所以如果你在self.presentingViewController 上调用dismiss。然后 B 会解散!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-21
    • 1970-01-01
    • 2016-06-18
    • 2018-03-08
    • 2017-01-06
    • 1970-01-01
    相关资源
    最近更新 更多