Ответ 1
Не самый красивый код, но это должно работать:
if ([self.presentedViewController isKindOfClass:[UINavigationController class]] &&
((UINavigationController *)self.presentedViewController).topViewController == drawController) {
…
Я представил UINavigationController, содержащий UIViewController для собственного объекта со следующим кодом
drawController = [[DrawImageViewController alloc] initWithNibName:nil bundle:nil];
[drawController setDrawControllerDelegateObject:self];
UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:drawController];
[self presentModalViewController:nav animated:YES];
[nav release];
Но когда перед вызовом вышеуказанного кода во второй раз я хочу знать, отображается ли текущий контроллер представления на экране drawController. Я использую следующий код
if (drawController && [drawController isBeingPresented])
Но это не работает для меня, а также для iOS 5.0, поэтому я застрял здесь. Пожалуйста, помогите мне узнать, как мне узнать, как появился текущий UIViewController на экране какого класса и будет ли drawContoller показываться на экране или нет? Извините за мои опечатки, если они есть. Любая помощь будет оценена.
Спасибо Нехе Мехта
Не самый красивый код, но это должно работать:
if ([self.presentedViewController isKindOfClass:[UINavigationController class]] &&
((UINavigationController *)self.presentedViewController).topViewController == drawController) {
…
Используйте navigationController visibleViewController property
и isKindOfClass method
, чтобы узнать, что на top
:
if([self.navigationController.visibleViewController isKindOfClass:[yourcontroller class]])
//exists
else
//not exists
Проверьте метод UINavigationController
visibleViewController
.
Для документации см. UINavigationController