4

В моем приложении я имею следующую конфигурацию, чтобы открыть мой взгляд контроллеров:IOS: открыть и закрыть некоторые контроллеры просмотра

Когда я пишу «pushViewController» я использую навигационный контроллер, и когда я пишу «настоящий " Я использую presentModalViewController.

firtsView -> (pushviewcontroller) -> secondOneView -> (present) -> thirdOneView -> (present) -> fourthView 

firstView -> (pushviewcontroller) -> secondTwoView -> (present) -> thirdTwoView 

Это схема моего приложения для организации контроллеров моего представления. Тогда мой вопрос:

Что способ вернуть из «fourthView» (то есть, когда я вернусь из «fourthView») в «secondTwoView»?

Есть ли способ сделать это?

ответ

5

Да, есть.

UIViewController предлагает различные способы отклонения контроллера вида в зависимости от того, был ли вы представленным способом или нет. Это:

-(void)dismissModalViewControllerAnimated:(BOOL)animated; // modal 
-(void)dismissViewControllerAnimated:(BOOL)flag 
          completion:(void (^)(void))completion; 

Вам нужно будет уволить их один за другим. Кроме того, потребуется время, чтобы прочитать View Programming Guide от Apple.

Использование UINavigationController вы можете выскочить к любому контроллеру просмотра с помощью:

-(NSArray *)popToViewController:(UIViewController *)viewController 
         animated:(BOOL)animated; 

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

-(UIViewController *)popViewControllerAnimated:(BOOL)animated; 
0

если вы используете presentViewController

я думаю вы должны уволить viewController один за другим

, но если вы navigationcontroller только, то вы можете выскочить к ViewController вы хотите

0
  1. в ViewController thirdOneView, сделайте dismissModalViewControllerAnimated: НЕТ
  2. в ViewController secondOneView никогда делать dismissModalViewControllerAnimated: НЕТ снова.
  3. в ViewController secondOneView никогда делать popViewControllerAnimated: НЕТ
  4. в ViewController FirstView СДЕЛАЕТ pushViewController к secondTwoView

Если вы хотите, чтобы некоторые анимации. Я бы предложил сделать это вручную, используя CoreAnimation. С

-(void)dismissViewControllerAnimated:(BOOL)flag 
         completion:(void (^)(void))completion; 

доступен только после iOS5.

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