我有一个UIAlert持久性有机污染物最多3次,每次它被称为。它的出现,然后消失之前,我可以点击。它可能是的 viewDidLoad 本身是被称为3次?

我实现了一个UIAlert在 viewDidLoad 我应用程序:

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:title message:alertMessage  delegate:self cancelButtonTitle:ok otherButtonTitles:nil];

这是的 viewDidLoad 在rootViewController,管理意见:

- (void)viewDidLoad {
    Kundenkarte *kartenAnsicht = [[Kundenkarte alloc]
                                                initWithNibName:@"Kundenkarte" bundle:nil];
    kartenAnsicht.rootViewController = self;
    kartenAnsicht.viewDidLoad;
    self.map = kartenAnsicht;


    [self.view addSubview:kartenAnsicht.view];


    [kartenAnsicht release];
//  [super viewDidLoad];

}

viewDidLoad 这唤起了UIAlert是在 kartenAnsicht 图控制器。

我希望有人可以帮助我,因为我的想法。

有帮助吗?

解决方案

首先,你永远不应把任何类型的显示器中的 viewDidLoad.该方法旨在对的场景背后的结构之后的观点是第一读笔尖。有没有把握,就会被称为每一次视显示器,因为之后第一次载荷,视可能举行的记忆并不重装上阵从笔尖。

相反,把该呼吁唤起NSAlert在 viewWillDisplayviewDidDisplay.这将显示该警告每次查看的出现。

我怀疑 viewDidLoad 是所谓的三次,但检查,只是把一个只在法看到它是多少次叫。

当你说:

我实现了一个NSAlert在 viewDidLoad()我的应用程序:

...这是什么意思?什么样的对象究竟有方法吗?如果它是应用程序的代表,这将不会的工作,因为该应用程序委托协议没有回应 viewDidLoad.它必须在一个UIViewController.

Edit01:

看看这篇文章了同样的问题: UIAlertView弹了三次每次通话,而不是只有一次

简短的回答:你杀了的警报通过释放。要么保留它作为一个酒店的图控制或更好的是,显示该警报 runModal 而不是的 show 和捕获的按钮数量返回。

其他提示

您不需要调用-viewDidLoad自己,它是由NIB加载机制自动运行。这意味着你得到-viewDidLoad的额外调用:一个由设计,和演员,只要你把它叫做

这将是有益的,看看周围的警报调用的代码。

我使用警报每当可达性的变化。由于可达性,反复确认,警报可以得到多次呼吁。为了减轻这一点,我包裹像这样的警报代码:

if (!myAlert) { /* set up and show myAlert */ }

然而,一个问题是,当你点击取消按钮,警报将保持不为零,因此也不会再显示的,因为条件。如果有人可能会增加与该修复这种反应,这将是巨大的。我假设我可以添加处理程序取消按钮,它会摧毁myAlert。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top