Сначала запустите контроллер второго вида стека навигации - PullRequest
0 голосов
/ 23 марта 2019

Существует приложение календаря по умолчанию.

Он запускается со следующим контроллером вида, и кнопка возврата уже там, как и раньше, до этого был запущен другой контроллер вида:

enter image description here

Когда вы нажимаете кнопку возврата, вы получаете следующий контроллер вида:

enter image description here

Как они это сделали?

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

Ответы [ 2 ]

1 голос
/ 23 марта 2019

Если бы я сделал это, я бы просто начал с использования pushViewController(animated:), чтобы поместить представление месяца в стек навигации, с animated: false в методе viewWillAppear(animated:) контроллера корневого представления.Календарь будет отображаться пользователю уже на один уровень в стеке навигации.

Итак, первый контроллер - это представление года, а затем представление месяца - это второй, помещенный в стек, но все это происходитдо того, как пользователь увидел какое-либо из представлений.Просто, верно?

Вот документы для UINavigationController на случай, если это поможет.

0 голосов
/ 23 марта 2019

Я думаю, что вам нужно нажать на контроллеры вида один раз при запуске. Самый простой способ сделать это - создать подкласс UINavigationController и назначить его корневому навигационному контроллеру в раскадровке. Затем просто выполните работу в методе viewWillAppear вашего подкласса, так как он будет вызван ровно один раз при запуске.

Конечно, вы также можете достичь того же результата, используя флаг, чтобы загружать следующий контроллер вида только один раз, если вы вставили push-код в viewWillAppear.

контроллера первого представления.
@interface MyNavigationController : UINavigationController

@end

@implementation MyNavigationController

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];

    UIViewController *secondVC = [self.storyboard instantiateViewControllerWithIdentifier:@"secondVC"];
    [self pushViewController:secondVC animated:NO];
}

@end
...