我在视图控制器的方法中遇到了一些UIAlertView
I实例的问题。这个UIViewController
来自另一个UIViewController
,在某个时刻我会以这种方式从实例方法中显示UIAlertView
:
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Upload Error", @"")
message:NSLocalizedString(@"It was not possible to complete the upload, do you want to try again?", @"")
delegate:self
cancelButtonTitle:NSLocalizedString(@"Cancel", @"")
otherButtonTitles:NSLocalizedString(@"Accept", @""), nil];
[alertView show];
我可以在显示此警报视图之前或之时关闭显示的UIViewController
,这导致当呈现的视图控制器不再出现在屏幕上时会显示此类警报视图,因此警报视图显示在呈现视图控制器的顶部。然后,当点击其中一个警报视图的按钮时,应用程序崩溃,我想因为它的委托是呈现的视图控制器而且它不存在。我怎么能避免这种情况呢?
谢谢!
答案 0 :(得分:0)
在您的呈现控制器即将被解除之前调用dismissWithClickedButtonIndex:animated:
来解除警报视图,可能在其viewWillDisappear:或适当的方法中。或者,如果您希望即使在呈现的视图控制器消失后警报视图仍保留在屏幕上,请将呈现视图控制器参考传递给呈现的视图控制器,并将alertView的委托设置为呈现视图控制器。
答案 1 :(得分:0)
答案取决于您想要实现的行为。
首先检查UIAlertView documentation:
委托:接收方的委托,如果没有委托,则为零。