Представление UIAlertController от модально представленного контроллера, который отклоняется
До iOS 8 UIAlertView можно было отображать из модально представленного UIViewController в то же время, когда UIViewController был отклонен. Я обнаружил, что это особенно полезно, когда пользователь должен быть предупрежден о некоторых изменениях, которые произошли, когда он нажал кнопку "Сохранить" на модально представленном контроллере. Начиная с iOS 8, в случае, когда UIAlertController отображается из модально представленного контроллера представления, в то время как он отклоняется, UIAlertController является тоже уволен. UIAlertController будет уволен до того, как пользователь сможет прочитать его или уволить его сам. Я знаю, что у меня может быть делегат для модально представленного контроллера, отображающий представление предупреждения, когда контроллер отклонен, но этот случай создает массу дополнительной работы, так как этот контроллер используется во многих местах, и UIAlertController должен быть представлен с определенными условиями, требующими, чтобы параметры были переданы обратно делегату контроллера в каждом случае. Есть ли способ, чтобы отобразить UIAlertController от модально представленного контроллера (или, по крайней мере, от кода внутри контроллера) в то же самое время, когда контроллер отклоняется, и должен ли UIAlertController оставаться до тех пор, пока он не будет отклонен?
1 ответ:
Вы можете обработать это в блоке завершения метода dismissViewControllerAnimated вашего модального контроллера clas. Представьте UIAlertController на rootviewcontroller, который должен обрабатываться в любом классе.
- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. [self.navigationItem.rightBarButtonItem setAction:@selector(dismissView)]; [self.navigationItem.rightBarButtonItem setTarget:self]; } - (void)dismissView { [self dismissViewControllerAnimated:YES completion:^{ [self showAlert]; }]; } - (void)showAlert { UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"Alert" message:@"This is Alert" preferredStyle:UIAlertControllerStyleAlert]; UIAlertAction *okButton = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) { [alertController dismissViewControllerAnimated:YES completion:nil]; }]; UIAlertAction *cancelButton = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) { [alertController dismissViewControllerAnimated:YES completion:nil]; }]; [alertController addAction:okButton]; [alertController addAction:cancelButton]; UIViewController *rootViewController=[UIApplication sharedApplication].delegate.window.rootViewController; [rootViewController presentViewController:alertController animated:YES completion:nil]; }