0

Как я могу узнать внутри толкаемый VC, который VC называется этой функцией (кто звонит мне, чтобы прибыть):Как узнать, какой класс толкнул меня?

в ом вызывном контроллере:

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

в. м вызываемого контроллера:

NSString* class = [self.navigationController whoCalledMe]; 

ответ

4

self.navigationController.viewControllers представляет собой массив зрения контроллера толкнули на стек из UINavigationController ,
Итак, последний из ваших «self» (calledViewController).
Последний, но один, который нажал (whoCalledMe).

Так,

NSString *className = NSStringFromClass([self.navigationController.viewControllers 
    [self.navigationController.viewControllers.count -2] class]); 

помнить также, чтобы проверить, что есть по крайней мере, 2 вид контроллеры в массиве.

+2

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

+1

Также не забудьте проверить, что по крайней мере в массиве есть 2 контроллера вида (например: каким-то образом пользователю удается перейти на эту страницу, когда он является контроллером корневого представления), в противном случае вы смотрите на объект с индексом -1. –

2

Попробуйте так: -

if (self.navigationController.viewControllers.count > 1){ 
    UIViewController* vc = [self.navigationController.viewControllers objectAtIndex: 
     self.navigationController.viewControllers.count-2]); 
    NSString *className = NSStringFromClass([vc class])} 
} 
+0

Этот ответ кажется лучше и безопаснее –

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