iPhone:当在viewWillAppear中执行

iPhone:当在viewWillAppear中执行

问题描述:

我有一个工作的应用程序被示出警报停止的执行代码iPhone:当在viewWillAppear中执行

装在第一视图之前,我把警报在viewWillAppear中方法:

- (void)viewWillAppear 
{ 
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"MyAppp" message:@"Application will connect to Internet. Continue?" 
               delegate:self cancelButtonTitle:nil otherButtonTitles:@"No, quit", @"Yes", nil]; 
    [alert show];  
    [alert release]; 
} 

我能得到正确的两个按钮的点击次数(是/否)......

但是......我想代码停止执行,等待一个答案,而是代码的推移,连接到互联网和检索数据...

如何防止一个视图,也基于用户输入?

的viewWillAppear中是一个通知,它允许你完成一些东西显示在视图之前,你无法避免的观点的出现在这里。你必须检查你的实现。

+0

所以,我发现根本没有办法来显示UIAlertView中模态(用代码中断) – Antonio 2010-10-02 22:09:20

+0

可以,但不是在事件。 UIAlertView不会停止代码执行。您应该退出显示警报的功能,并继续使用UIAlertViewDelegate中的例程。 – Jorge 2010-10-02 23:12:56

就打破你的一个viewWillAppear中方法为两种方法。不要试图在一个连续的代码块中完成这一切。

第一种方法将启动警报,然后就退出/退出/返回。

第二种方法可以由警报按钮响应处理程序调用,然后在用户响应后,仅在警报处理程序调用该视图后才能完成视图的加载。

您可能需要也可能不需要在第一个和第二个方法之间保存额外的状态信息(在额外的属性或实例变量中,而不是方法局部变量)。

我解决它通过显示“viewDidLoad中”的回答,得到了代表拿到哪个按钮被按下,然后处理数据只有当用户按下“是”

以下可以使用,我知道它有点老问题,但可能是别人 有用..

[alert show]; 

while ((!alert.hidden) && (alert.superview != nil)) 
    { 
     [[NSRunLoop currentRunLoop] limitDateForMode:NSDefaultRunLoopMode]; 

    }