IOS: открыть и закрыть некоторые контроллеры представления - PullRequest
4 голосов
/ 27 января 2012

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

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

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

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

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

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

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

Ответы [ 3 ]

5 голосов
/ 27 января 2012

Да, есть.

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 голосов
/ 27 января 2012
  1. в третьем контроллере представления ViewOneView, dismissModalViewControllerAnimated: NO
  2. в контроллере представления secondOneView выполните dismissModalViewControllerAnimated: NO снова.
  3. в контроллере представления secondOneView do popViewControllerAnimated: NO
  4. в ViewController firstView сделать pushViewController для secondTwoView

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

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

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

0 голосов
/ 27 января 2012

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...