В iOS ‹= 7 сразу после вызова dismissViewControllerAnimated:completion:
результатом будет presentedViewController
, равное nil
. В iOS 8 presentedViewController
по-прежнему указывает на представленный контроллер представления до тех пор, пока не будет выполнен блок завершения.
[self dismissViewControllerAnimated:NO completion:^{
//self.presentedViewController is nil
}];
//self.presentedViewController is nil on iOS 7, but not nil on iOS 8
Таким образом, в iOS 8 мы не можем полагаться на свойство presentedViewController
, чтобы узнать, какой контроллер представления в настоящее время является самым видимым контроллером представления.
В iOS 8 оповещения должны быть представлены на контроллере представления (что создает другую проблему< /а>). Они не будут отображаться, если контроллер представления, который мы пытаемся представить, уже представляет контроллер представления.
Если я просто закрою свой представленный контроллер представления и покажу UIAlertController
на верхнем видимом в данный момент контроллере представления (путем рекурсивного поиска последнего presentedViewController
), то он, конечно, не покажет, но зарегистрирует сообщение об ошибке: «Предупреждение: попытка представить, чье представление не в иерархии окон!"
- Это ошибка в iOS 8 или просто новый способ?
- Как я могу узнать контроллер представления, на котором я могу представить свой
UIALertController
?
isBeingDismissed
немного помогает - person fabb   schedule 13.11.2014