Как перемещаться между контроллерами, swift - PullRequest
0 голосов
/ 13 июля 2020

Я создаю аналог заметок iphone для изучения. Я хочу сделать навигацию между контроллерами. И есть два способа: контроллер навигации и методы присутствия / отклонения. Теперь я использую второй.

У меня есть три экрана: «список заметок», экран «просмотр заметок» и экран «редактировать / вносить заметки». Когда я go на «существующую заметку -> редактировать существующую заметку» (происходит «присутствует» из «списка заметок», а затем «присутствует» на экране «примечания»), отредактируйте ее и сохраните, выполнив отклонение (один раз) и у меня экран стал "экраном для заметок", все нормально. Но когда я делаю заметку (это происходит из экрана «список заметок») и сохраняю, выполняю увольнение, и мой экран становится экраном «список заметок», но я хочу увидеть экран «часы-заметки», хочу посмотреть только что сделанную заметку .

Могу я сделать это представлением / увольнением или мне нужно использовать NavigationController?

Ответы [ 2 ]

1 голос
/ 13 июля 2020

Использование Present / Dismiss:

Вам нужно будет отобразить экран «Watch-Note» в «списке заметок» после создания заметки. Это включает в себя два шага:

  1. Экран «список заметок» должен знать, что «сделать заметку» закрывается. Вы можете передавать переменные между двумя контроллерами или использовать dismissViewControllerAnimated:completion
  2. Когда вы знаете вышеизложенное, представляйте «заметку-наблюдение» из «списка заметок». Не забудьте использовать animated: false, иначе пользователь увидит приближающуюся анимацию на экране.

Использование контроллера навигации: (настоятельно рекомендуется)

  1. Контроллер навигации предоставит вам большую гибкость и возможность перемещаться между контроллерами. Вы можете использовать navigationController.popToViewController для перехода к желаемому списку контроллеров / смотреть / делать / добавлять заметки.

  2. Ваш код не будет беспорядочным и его будет легко поддерживать. Вам не нужно передавать переменные или помнить, с какого экрана вы пришли. Вы можете использовать navigationController.viewControllers, чтобы узнать, какие контроллеры находятся в стеке.

0 голосов
/ 13 июля 2020
• 1000 *

- (void) viewWillAppear: (BOOL) анимированный {

[super viewWillAppear:animated];

if ([self isBeingPresented]) {
    // being presented
    DispatchQueue.main.async() {
        self.dismiss(animated: true, completion: nil)
    }
} else if ([self isMovingToParentViewController]) {
    DispatchQueue.main.async() {
        self.navigationController?.popViewController(animated: true)
    }
}

}

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