【问题标题】:Unwind segue is dismissing two view controllers when the presenting view controller is a child of tabbarController当呈现视图控制器是 tabbarController 的子级时,展开 segue 正在关闭两个视图控制器
【发布时间】:2020-05-30 05:05:51
【问题描述】:

当呈现的视图控制器是由 tabbarController 的子级呈现的 UIViewController 时,展开 segue 关闭两个视图控制器。 这是结构:

tabBarController (root) -> child(first tab) -> MiddleViewController -> TopViewController

当我从 TopViewController 执行 segue(unwind) 时,它会被解散并解散 MiddleViewController。会不会是因为middleViewController的presentingViewController是tabBarController的子?带segue参数的函数确实在MiddleViewController里面。会有什么问题?

TopViewController 展示风格为.OverCurrentContext

【问题讨论】:

  • 不清楚。如果 MiddleViewController 是选项卡栏控制器的子级,则不能“关闭”它,因为它从未出现过。实际发生了什么?是不是一切都变黑了?如果是这样,您是否切换到其他选项卡并返回?如果是这样,那是一个众所周知的错误;当标签呈现另一个视图控制器时,您不能让用户切换标签。
  • 实际上,tabbarController 的一个子节点展示了 MiddleViewController。当从 topViewController 执行 unwind segue 时,顶部和中间的 ViewController 都被解除,我再次回到第一个选项卡。
  • 那么你错误地连接了 unwind segue。如果你做对了,你就会回到你想回到的地方。中间视图控制器不会自动关闭。
  • 你有没有想过这个问题?我看到相同的行为并认为这是 iOS 中的错误?

标签: swift uiviewcontroller swift5


【解决方案1】:

您错误地连接了 unwind segues。如果您正确连接它们,您将返回中间视图控制器而不关闭它(直到您要求关闭它)。

正如您在此处看到的,我们首先 -> 中间 -> 顶部,然后是顶部 -> 中间 -> 第一个,顺序良好,一次一个。

【讨论】:

  • 我正在使用 performSegue(withIdentifier:, sender:) 手动进行展开转场,而不是使用 UIButton 展开。
猜你喜欢
  • 1970-01-01
  • 2017-07-09
  • 2017-02-03
  • 2021-12-16
  • 2014-08-05
  • 1970-01-01
  • 2016-11-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多