2013-04-02 3 views
9

Я выдвигаю такое мнение.Получить имя класса контроллера родительского контроля в iPhone Навигационный нажим

[[self.navigationController pushViewController:myViewController animated:YES];

Как я могу получить имя класса родительского контроллера представления с толкаемома зрения (зрения ребенка)? Any Idea?

ответ

19

Это следует сделать это:

NSUInteger numberOfViewControllersOnStack = [self.navigationController.viewControllers count]; 
UIViewController *parentViewController = self.navigationController.viewControllers[numberOfViewControllersOnStack - 2]; 
Class parentVCClass = [parentViewController class]; 
NSString *className = NSStringFromClass(parentVCClass); 
+1

Неплохо, если вы проверили, что в стеке навигации имеется более одного контроллера вида. Если вы попытаетесь использовать его в контроллере корневого представления, вы получите исключение. – Mert

+2

@Mert: это правда. Я предположил, что оригинальный плакат может утверждать, что в стеке навигации есть как минимум 2 контроллера. –

4

Получить класс родительского вида контроллера:

id class = [self.navigationController.viewControllers[0] class]; 

и его название:

NSString *className = NSStringFromClass(class); 
+1

Это получит класс навигации диспетчерское контроллер корневого представления, необязательно являющийся непосредственным родителем контроллера верхнего уровня (в зависимости от положения навигации к). –

Смежные вопросы