вернуться в главное меню из любого UIViewcontroller - PullRequest
0 голосов
/ 14 января 2012

Мне интересно, есть ли способ вернуться с UIViewController, например, на 3-4 шага назад, у меня есть главный экран, который будет переходить к другим UIViewController через presentModalViewController, на следующем экране это будет иметь UINavigationBar, что приведет к глубине 4-5 уровней. Я хочу поставить кнопку, позволяющую пользователю вернуться домой прямо к дому, не возвращаясь ко всем видам, которые он вводит.

спасибо заранее.

Ответы [ 3 ]

1 голос
/ 14 января 2012

Ваш контроллер представления корневого уровня регистрируется в качестве наблюдателя уведомления, такого как «POP_TO_ROOT». Когда он получит это уведомление, вызовите метод, чтобы отклонить ваш контроллер модального представления (или что-то еще в стеке).

В вашем стеке viewcontroller любой из представлений 4 или 5 уровней может просто опубликовать уведомление "POP_TO_ROOT".

РЕДАКТИРОВАТЬ: добавить код

На главном «экране» перед вызовом presentModalViewController сделайте следующее:

    [[NSNotificationCenter defaultCenter] addObserver:self 
                                             selector:@selector(handlePopToRoot) 
                                                 name:@"POP_TO_ROOT"
                                               object:nil];

и добавьте этот метод:

 - (void) handlePopToRoot {
     [[NotificationCenter defaultCenter] removeObserver:self 
                                                   name:@"POP_TO_ROOT" 
                                                 object:nil];
     [self.navigationController dismissModalViewControllerAnimated: YES]; 
 }

Затем, глубоко в вашей иерархии viewcontroller, когда вы хотите полностью выскочить, вам просто нужно опубликовать уведомление:

 [[NSNotificationCenter defaultCenter] postNotification:@"POP_TO_ROOT" object:nil];
0 голосов
/ 14 января 2012

Если я правильно понимаю ваш вопрос, вы представляете контроллер навигации (с подключенным к нему контроллером корневого представления) из вашего «контроллера основного вида» модально, и вы хотите иметь возможность вернуться к своему «контроллеру основного вида»".

Поскольку у вас всегда будет указатель на ваш контроллер навигации, вы сможете вызывать dismissModalViewControllerAnimated: с любого из ваших контроллеров представления, и он вернет вас обратно к контроллеру основного представления.

    [[self.navigationController parentViewController] dismissModalViewControllerAnimated:YES]
0 голосов
/ 14 января 2012

Сохраните ваш корневой View Controller в некотором свойстве и позвоните:
- (NSArray *)popToViewController:(UIViewController *)viewController animated:(BOOL)animated

...