Я переношу свое приложение в iOS 8.0 и замечаю, что UIAlertView устарел.
Итак, я изменил все, чтобы использовать UIAlertController. Это работает в большинстве случаев.
Кроме того, когда мое приложение открывается, оно выполняет несколько проверок, чтобы сообщать о различных состояниях пользователю...
Например: "Предупреждение, вы не установили X и не должны выполнять Y перед выполнением проектов" и "Предупреждение, вы используете бета-версию и не полагаетесь на результаты" и т.д. (это просто примеры!)
В UIAlertView я бы (скажем) получил два окна предупреждения одновременно, которые пользователь должен дважды нажать, чтобы уволить оба... но они оба появляются.
В UIAlertController с приведенным ниже кодом для представления "общего" предупреждения, я получаю только одно предупреждающее сообщение вместе с сообщением в консоли:
Предупреждение: попытка представить UIAlertController: 0x13f667bb0 на TestViewController: 0x13f63cb40, который уже представляет UIAlertController: 0x13f54edf0
Итак, хотя приведенное выше, вероятно, не очень хороший пример, я думаю, что могут быть ситуации, когда может потребоваться представить более одного глобального оповещения из-за "событий" во время работы приложения. Под старым UIAlertView они появятся, но, похоже, они не будут находиться под контролем UIAlertController.
Может ли кто-нибудь предложить, как это может быть достигнуто с помощью UIAlertController?
Спасибо
+(void)presentAlert:(NSString*)alertMessage withTitle:(NSString*)title
{
UIAlertController *alertView = [UIAlertController
alertControllerWithTitle:title
message:alertMessage
preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction* ok = [UIAlertAction
actionWithTitle:kOkButtonTitle
style:UIAlertActionStyleDefault
handler:^(UIAlertAction * action)
{
//Do some thing here
[alertView dismissViewControllerAnimated:YES completion:nil];
}];
[alertView addAction:ok];
UIViewController *rootViewController = [[[UIApplication sharedApplication] delegate] window].rootViewController;
[rootViewController presentViewController:alertView animated:YES completion:nil];
Изменить: я заметил, что на iOS8, представляя два AlertViews последовательно, они "поставлены в очередь" и появляются последовательно, тогда как в iOS7 они появляются одновременно. Кажется, Apple изменила UIAlertView на очередь в нескольких экземплярах. Есть ли способ сделать это с помощью UIAlertController, не продолжая использовать (устаревший, но измененный) UIAlertView???