2013-08-14 3 views
9

На контроллере представления у меня есть кнопка, которая представит другой контроллер вида. Со второго контроллера просмотра я могу перейти к другим контроллерам представлений, но не обязательно вернуться к тому, что меня достало. Если это так, как удалить исходный контроллер представления?iPhone - Удаление представленного контроллера представления

+0

Вы можете разместить код, как к тому, что вы пробовали до сих пор. Также, что вы используете для загрузки контроллера вида. Это UINavigationController? Вы пробовали использовать контроллер вида? –

+0

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

+0

Если я использую функцию rejectViewController или popViewController, не будет ли какой-либо из них взять меня в исходный контроллер? Я ищу способ, если возможно, отклонить начальный контроллер представления. – Carmichael

ответ

25

Ваше описание немного неясно здесь. Там может быть 3 различных случаев здесь:

  1. Перемещение через иерархией навигации контроллера
  2. Вырвавшись навигационной иерархии контроллера на другой контроллер зрения
  3. Просто добавив другой контроллер представления к текущей навигации стека контроллера

В первом случае вы можете использовать методы UINavigationController:

- (UIViewController *)popViewControllerAnimated:(BOOL)animated 
- (NSArray *)popToViewController:(UIViewController *)viewController animated:(BOOL)animated 
- (NSArray *)popToRootViewControllerAnimated:(BOOL)animated 

и используйте свойство viewControllers для перемещения по стеку.

Ina второй, если вы хотите, чтобы вырваться из иерархии на один полностью другой контроллер представления, а затем просто сделать это:

[[[UIApplication sharedApplication] keyWindow].rootViewController dismissViewControllerAnimated:YES completion:nil]; 
[[UIApplication sharedApplication] keyWindow].rootViewController = newController; 

или даже лучше: добавить вторую строчку в завершение блока первой линии.

Или в третьем случае, если вы хотите только сделать одно исключение, но в противном случае остаться в стек навигации контроллера, а затем использовать методы:

- (void)addChildViewController:(UIViewController *)childController 
- (void)removeFromParentViewController 
17

Это зависит от того, как вы фактически представили текущий контроллер. Если бы это было модально, то

[self.presentingViewController dismissViewControllerAnimated:YES completion:nil]; 

Если была нажата с помощью навигационного контроллера:

[self.navigationController popViewControllerAnimated:YES]; 
Смежные вопросы

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