0

我有一个工作应用程序

在加载第一个视图之前,我在 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];
}

我可以正确点击两个按钮(是/否)...

但是......我希望代码执行停止并等待答案,但代码继续运行,连接到互联网并检索数据......

如何根据用户输入阻止视图加载?

4

4 回答 4

2

viewWillAppear 是一个通知,它允许您在视图显示之前完成一些事情,您无法避免视图出现在这里。您必须审查您的实施。

于 2010-10-02T21:04:59.890 回答
1

只需将您的一个 viewWillAppear 方法分成两种方法。不要试图在一大块顺序代码中完成所有操作。

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

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

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

于 2010-10-03T00:38:21.883 回答
1

可以使用以下内容,我知道它的老问题,但可能对其他人有用..

[alert show];

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

    }
于 2014-01-02T21:20:49.657 回答
0

我通过在“ViewDidLoad”中显示答案来解决它,让一个委托来获取按下哪个按钮,然后仅在用户按下“是”时处理数据

于 2010-10-03T09:29:17.290 回答