IOS: открыть и закрыть некоторые контроллеры представления

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

Когда я пишу "pushViewController", я использую контроллер навигации, а когда я пишу "подарок", я использую presentModalViewController,

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

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

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

Какой способ вернуться из "четвертого вида" (то есть когда я вернусь из "четвертого вида") в "второй вид"?

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

3 ответа

Да это так.

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

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

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

Используя UINavigationController Вы можете открыть любой контроллер представления, используя:

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

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

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

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

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

но если вы только навигационный контроллер, то вы можете открыть нужный контроллер, который вы хотите

  1. в контроллере представления ThirdOneView выполните dismissModalViewControllerAnimated:NO
  2. в viewcontroller secondOneView выполните dismissModalViewControllerAnimated:NO снова.
  3. в viewcontroller secondOneView сделать popViewControllerAnimated:NO
  4. в viewViewtroller firstView сделать pushViewController для secondTwoView

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

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

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

Другие вопросы по тегам