【问题标题】:Pushed segue scene works, modal segue scene doesn't?推送的 segue 场景有效,模态的 segue 场景不行?
【发布时间】:2013-10-23 02:11:54
【问题描述】:

我手动调用了一个很好用的 push segue。新的 TableView 场景出现,导航控制器中的自定义导航按钮完美运行。

但是,我希望它改为模态转场。因此,我将类型更改为模态并将新场景嵌入到导航控制器中。新场景出现,但点击取消按钮时场景不会消失。

任何想法为什么?谢谢。

【问题讨论】:

  • 您从按钮调用了哪些操作?这些操作是否可能对模式无效(例如 popViewControllerAnimated)?
  • 哦!当然。我经常忘记在使用模式时需要更改该调用。
  • 那么请更正您的问题。并不是动作方法没有被调用,它们被调用了但是什么都没有发生。
  • 已更正。我原本以为它根本没有调用该方法。不知道我是怎么错过的。

标签: iphone objective-c ios xcode


【解决方案1】:

Push 转场将一个新的视图控制器添加到导航堆栈中,其中还包含呈现视图控制器。这就是导航栏在这种情况下起作用的原因。

Modal segue 不会将视图控制器添加到导航堆栈,它会将其添加为呈现视图控制器的子级,因此在这种情况下没有定义导航。

如果您希望导航栏在模态呈现的控制器上工作,您将不得不手动连接操作(例如:使“返回”按钮关闭模态呈现的控制器)。

另外,正如@Edwin Iskandar 所指出的,确保在视图控制器上调用正确的关闭操作,这意味着:popViewControllerAnimated 不会在模态呈现的视图控制器上工作,而是应该调用 dismissModalViewControllerAnimated

P.S.:请注意,dismissModalViewControllerAnimated 在 iOS 6 中被 dismissViewControllerAnimated:(BOOL) completion:^(void)completion 取代

【讨论】:

  • 场景已经连接了按钮。这就是他们使用 push segue 的原因。我想我在最初的问题中没有说清楚。稍微更新了问题以使其更清楚。
猜你喜欢
  • 2012-04-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多