为什么UIAlertView没有显示?

时间:2011-03-16 21:03:07

标签: iphone objective-c ios-simulator

由于某种原因屏幕变暗并冻结,警报未显示......有人可以帮忙吗?

提前致谢!

} else {
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Hello!" 
                                                message:@"Hello!" delegate:self 
                                      cancelButtonTitle:@"Done" 
                                      otherButtonTitles:nil];
    [alert show];
    [alert release];
}

4 个答案:

答案 0 :(得分:15)

您可能正在从后台线程调用show,在主线程上调用它,如下所示:

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Hello!" 
                                            message:@"Hello!" delegate:self 
                                            cancelButtonTitle:@"Done" 
                                            otherButtonTitles:nil];
[alert performSelectorOnMainThread:@selector(show)
                            withObject:nil
                            waitUntilDone:NO];
[alert release];

答案 1 :(得分:0)

委托是正确的,但也许是因为你最后发布它可能会导致问题。

尝试使用nil委托: - )

例如:

UIAlertView *alertView;
alertView = [ [ UIAlertView alloc ] init ];
[ alertView setMessage:@"Hello World" ];
[ alertView show ];
[ alertView release ];

如果它有效,那么它就是委托,你需要将变量声明为类var。或者它可能在其他地方。

答案 2 :(得分:0)

此警报是否可能处于大循环中并且您没有在多个线程上运行?屏幕变暗,没有发生任何事情,我等同于在主线程上运行一个长进程(因此UI不会刷新并显示警报)。

答案 3 :(得分:0)

如果从后台线程显示UIAlertView,则会出现没有弹出窗口的黑屏或弹出速度较慢的弹出窗口。把它放回主线程中就可以了。我上周才遇到这个问题。