0

UIAlertView在视图控制器的方法中遇到了一些问题。这UIViewController是从 another 呈现的UIViewController,并且在某一点上,我以UIAlertView这种方式显示 from an instance method:

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此警报视图之前或之时关闭显示,当显示的视图控制器不再出现在屏幕上时,是什么原因导致显示此类警报视图,因此警报视图显示在显示视图控制器的顶部。然后,当点击警报视图的按钮之一时,应用程序崩溃,我猜是因为它的委托是呈现的视图控制器并且它不存在。我怎样才能避免这种情况?

谢谢!

4

2 回答 2

0

dismissWithClickedButtonIndex:animated:通过在您呈现的视图控制器即将被解除之前调用来解除警报视图,可能在其 viewWillDisappear: 或适当的方法中。或者,如果您希望即使在呈现的视图控制器消失后警报视图仍保留在屏幕上,请将呈现视图控制器的引用传递给呈现的视图控制器并将 alertView 的委托设置为呈现视图控制器。

于 2013-08-21T14:04:35.477 回答
0

答案取决于您想要实现的行为。

首先检查UIAlertView 文档

委托:接收者的委托;如果没有委托,则为 nil。

  • 如果您不想根据用户操作执行“特殊操作”,请传递 null。
  • 如果您想根据用户操作做一些“特别的事情”,请创建一个特殊的委托来处理用户操作并使其保持活动状态。
于 2013-08-21T14:08:34.120 回答