Прежде всего, вы никогда не должны помещать какие-либо дисплеи в viewDidLoad
. Этот метод предназначен для закулисной конфигурации после того, как представление сначала читается из пера. Нет уверенности в том, что он будет вызываться каждый раз, когда отображается представление, поскольку после первой загрузки оно может сохраняться в памяти и не перезагружаться с пера.
Вместо этого поместите вызов для вызова NSAlert в viewWillDisplay
или viewDidDisplay
. Это будет отображать предупреждение каждый раз, когда появляется представление.
Я сомневаюсь, что viewDidLoad
вызывается три раза, но для проверки просто поместите NSLog в метод, чтобы увидеть, сколько раз он вызывается.
Когда вы говорите, что:
я реализовал NSAlert в
viewDidLoad () моего приложения:
... что это значит? Какой объект точно имеет метод? Если это делегат приложения, это не будет работать, поскольку протокол делегата приложения не отвечает на viewDidLoad
. Это должно быть в UIViewController.
Edit01:
См. Этот пост с такой же проблемой: UIAlertView выскакивает три раза за вызов вместо одного раза
Краткий ответ: Вы убиваете предупреждение, выпуская его. Либо сохраните его как свойство контроллера представления, либо, что еще лучше, отобразите предупреждение с помощью runModal
вместо show
и запишите номер кнопки, возвращенный немедленно.