关于模态视图行为

时间:2012-11-11 03:36:26

标签: ios uiviewcontroller modal-dialog

我正在制作模态视图。 我想要做的是等到模态视图被解除。 这是代码。

    SelecYourCountryViewController *selecYourCountryViewController = [[SelecYourCountryViewController alloc] initWithNibName:@"SelecYourCountryViewController" bundle:nil];
    selecYourCountryViewController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
    [self.presentingViewController presentViewController:selecYourCountryViewController animated:YES completion:nil];
    NSLog(@"select your contry");

在此代码中,尽管modalview(selecYourCountryViewController)处于活动状态,但进程仍然是下一步。 简而言之,在selecYourCountryViewController工作时会显示NSLog。  请让我知道等待视图被取消并获得返回值的方式。

(就像MsBbox上的VisualBasic行为一样)

提前致谢。

2 个答案:

答案 0 :(得分:0)

简单的回答是:实施viewWillAppear:。这种观点出现的原因之一是所呈现的观点消失了。

更复杂和正确的答案是:由您来设置,以便当控制器需要在呈现的视图控制器被解除时听到它时,呈现的视图控制器具有一种向该控制器发送消息的方法,告诉它它正在被解雇。查看Xcode中的Utility app模板,了解如何完成此操作:呈现控制器将呈现的控制器交给自己,以便呈现的控制器可以在解雇之前向其发送消息。

您可能还想阅读我的书中的讨论:

http://www.apeth.com/iOSBook/ch19.html#_presented_view_controller

答案 1 :(得分:0)

虽然我很同情你对VB的MsgBox底线的渴望,但这并不是它在iOS中的运作方式(出于某些原因)。辅助视图控制器告诉第一个视图控制器完成某项操作的正确方法是通过委派。 (请参阅 View Controller编程指南中的Using Delegation to Communicate with Other Controllers)或者您可以让辅助视图实际触发下一步。

如果您尝试使用viewWillAppear,则必须确定它出现的原因,即初始外观,因为次要视图已成功并且已被解除,因为次要视图已取消并被解除,等等。 ,要小心,如果你转换到iPad应用程序并使用弹出窗口,请记住,当弹出窗口被解除时,你不会得到viewWillAppear方法,等等。只需要注意一些小事情。