然后推模态然后推?

时间:2012-09-08 19:45:52

标签: ios xcode uiviewcontroller

我的应用程序中有一个主菜单屏幕,所以当我按下一个按钮时,我会推送到另一个视图控制器。在这些视图控制器之一中,我使用轻敲手势识别器来进行模态视图,并再次关闭模态视图。但是在这个模态视图中,我想要一个按钮{主菜单}来关闭视图控制器,然后解除推送。

如何解散2层推模和模态视图。使用push segue你会忽略推送视图,或者只是添加另一个推送返回。现在我无法解除模态并按下那个1按钮(那就是模态屏幕上)。

一些建议会有所帮助..

编辑: 主菜单视图控制器 - >(推送segue) - >查看controllerXXX view controllerXXX - >(modal segue) - >暂停控制器 暂停控制器 - >(忽略模态segue) - >查看controllerXXX 暂停控制器 - >(???(将不得不解除模态和弹出推送)???) - >主菜单视图控制器

1 个答案:

答案 0 :(得分:3)

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

如果您不熟悉委托模式,请参阅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的教程中,“委托”这个名称没有提到......这就是设计模式的名称。