Мой проект использует SWRevealViewController с контроллером панели вкладок. И я использую ниже код, чтобы получить видимый контроллер представления:Получить верхний UIViewController при использовании SWRevealViewController
- (UIViewController*) topMostController
{
return [self topViewControllerWithRootViewController:[UIApplication sharedApplication].keyWindow.rootViewController];
}
- (UIViewController*)topViewControllerWithRootViewController:(UIViewController*)rootViewController {
if ([rootViewController isKindOfClass:[UITabBarController class]]) {
UITabBarController* tabBarController = (UITabBarController*)rootViewController;
return [self topViewControllerWithRootViewController:tabBarController.selectedViewController];
} else if ([rootViewController isKindOfClass:[UINavigationController class]]) {
UINavigationController* navigationController = (UINavigationController*)rootViewController;
return [self topViewControllerWithRootViewController:navigationController.visibleViewController];
} else if (rootViewController.presentedViewController) {
UIViewController* presentedViewController = rootViewController.presentedViewController;
return [self topViewControllerWithRootViewController:presentedViewController];
} else {
return rootViewController;
}
}
Но когда я стоял на MessageViewController
, или что-нибудь еще, что я всегда получаю SWRevealViewController
на вершине. Пожалуйста, исправьте меня правильно, чтобы получить видимый контроллер в этом случае.
Вы когда-нибудь найти решение для этого? – Hemang
@Hemang: Да, но теперь так занят, чтобы опубликовать свой ответ, чтобы помочь другому, кто сталкивается с той же проблемой. – lee
Было бы здорово, если бы вы опубликовали свой ответ, который будет полезен всем. – Hemang