2015-10-17 2 views
3

Я пытаюсь создать архитектуру контроллера для процесса регистрации моего приложения. Ниже приводится изображение текущего состояния:Почему мой разворот снова зашел слишком далеко?

Controller Architecture

приложение начинается на странице входа в систему в первый раз, и если пользователь нажимает «SIGNUP», навигационный контроллер представлен модально через self.presentViewController. Затем контроллер навигации проталкивается через контроллер вида, который затем толкается ко второму контроллеру представления. На этом втором контроллере представления пользователь должен сначала нажать «Перейти», чтобы перейти к диспетчеру просмотра, который запрашивает дополнительную информацию, прежде чем продолжить процесс регистрации. Как только пользователь вводит дополнительную информацию об этом модально представленном контроллере, пользователь нажимает «Назад», чтобы вернуться во второй контроллер просмотра с помощью разматывания.

Однако, когда это нажато, режим размотки возвращается к второму контроллеру представления, а затем сразу возвращается на страницу «Вход». Кажется, что unind segue выводит все представленные в режиме просмотра виды, даже если функция разворота вложена во второй контроллер представления.

Что происходит и каково решение раскручивать вторую страницу регистрации?

+0

Проверка только перед тем, как я попытаюсь воспроизвести это: поэтому функция размотки появляется только в коде контроллера вида SecondPage? - И это iOS 9? Поведение разматывания сильно изменяется в iOS 9, поэтому важно знать. – matt

+0

Да, он появляется только в представлении SecondPage, и это iOS 9. –

ответ

8

У меня была такая же проблема, и это, как правило, вызвано одной из следующих причин:

  1. Использование устаревшего SEGUE
  2. Calling viewController.dismissViewControllerAnimated внутри метода @IBAction используется для размотки.
  3. Имея @IBAction, используемый для размотки в неправильном контроллере. @IBAction должен находиться в контроллере, который вы хотите отключить.

шаги разматывать SEGUE

  1. Создать метод @IBAction в SecondSignupController этот метод будет вызываться после размотки. Этот метод должен использовать UIStoryboardSegue в качестве примера аргумента -> @IBAction func onUnwindFromModalPage (segue: UIStoryboardSegue) {}. Основной целью этого метода является передача данных обратно, если в противном случае вы можете оставить его пустым.

  2. Control-Drag от кнопки Go-Back для выхода из символа в Modally Presented Controller в раскадровке. Символ выхода является последним символом сверху контроллера, когда выбран контроллер. Это покажет вам список @IBActions, который вы можете выбрать для отдыха. Выберите метод, который вы создали в SecondSignUpController.

+0

Да, тот факт, что OP видит это в два этапа, заставляет задуматься, есть ли у него другой код, который вызывает дополнительную размотку. – matt

+0

@wakeupsumo К сожалению, я следил за этими точными шагами в создании segue. И я уверен, что ни одна из возможных причин, которые вы представили, не применима к моей ситуации. –

+0

Когда я удаляю @IBAction, используемый для размотки во втором контроллере просмотра, нажатие кнопки «Назад» ничего не делает. Он просто остается на модно представленном контроллере. –