推然后模态然后推?

Posted

技术标签:

【中文标题】推然后模态然后推?【英文标题】:push then modal then push? 【发布时间】:2012-09-08 19:45:51 【问题描述】:

我的应用程序中有一个主菜单屏幕,因此当我按下按钮时,我会推送到另一个视图控制器。在其中一个视图控制器中,我使用轻击手势识别器进入模态视图,然后再次关闭模态视图。但在这个模态视图中,我想要一个按钮 主菜单 来关闭视图控制器,然后关闭推送。

如何消除 2 层推送和模式视图。使用 push segue,您是关闭 push 视图,还是只是添加另一个 push 以返回。现在我不能关闭模态并按下那个 1 按钮(在模态屏幕上)。

一些建议会有所帮助..

编辑: 主菜单视图控制器->(push segue)-> 视图控制器XXX 查看控制器XXX ->(模态转场)-> 暂停控制器 暂停控制器->(关闭模式segue)->查看控制器XXX 暂停控制器->(???(将不得不关闭模式和弹出推送)???)->主菜单视图控制器

【问题讨论】:

第三句话之后,你完全失去了我。也许一些图形(屏幕截图)有助于使您的问题易于理解。还要尝试使您的语言适应标准;没有推送视图之类的东西,因此“关闭推送视图”是没有意义的。 @看你能不能看懂我的编辑图 如果我理解正确,那么“关闭推送视图”实际上是说;从 navigationController 的 viewController 堆栈中弹出一个 viewController。 【参考方案1】:

您应该使用委托从模态视图控制器向呈现它的父视图控制器进行回调,然后它可以关闭模​​态并将其自身从导航堆栈中弹出。

如果您不熟悉委托模式,请参阅 Apple 的介绍:

http://developer.apple.com/library/ios/#Documentation/General/Conceptual/DevPedia-CocoaCore/Delegation.html

您也可以在 Ray Wenderlich 的网站上尝试本教程,了解开始情节提要(其中也有使用委托的示例):

http://www.raywenderlich.com/5138/beginning-storyboards-in-ios-5-part-1

编辑:

以下是您如何从呈现视图控制器中关闭模态视图控制器(也就是说,self 是呈现模态的视图控制器):

[self dismissModalViewControllerAnimated:YES];

以下是从导航堆栈弹出视图控制器的方法(其中 self 是您要弹出的视图控制器):

[self.navigationController popViewControllerAnimated:YES];

请参阅 Wenderlich 教程(通读一遍,有 2 个部分),它将向您展示如何创建协议和调用委托的方法。

不,Wenderlich 的教程中没有提到“委托”这个名称……这是设计模式的名称。

【讨论】:

在 ray wenderlich 教程中根本没有提到编辑、关闭、popviewcontroller 和委托。 Delegation 是设计模式的名称,但你是对的,我认为教程中没有提到它的名称。只需浏览上面的两个链接(尤其是彻底的 Wenderlich 教程),您就会明白的。干杯。 我不能直接关闭然后弹出。因为当我现在解雇它时,它会退出流行音乐的方法。我只需要找到解决方法

以上是关于推然后模态然后推?的主要内容,如果未能解决你的问题,请参考以下文章

如何检查视图控制器是不是以模态方式呈现或推送到导航堆栈上?

将 MFMailComposeViewController 推送到导航堆栈上?未以模态方式呈现

创建一个可以模态显示或推送到导航堆栈的 UIView

从模态视图内部推送到 iOS NavigationController

ios:如何关闭模态视图控制器,然后弹出推送的视图控制器

快速解除模式并推送到新的 VC