2017-01-12 11 views
2

Я пытаюсь сделать регистрационную форму с несколькими видами, но только одним контроллером. Перейдя к следующему представлению, я записываю ввод в структуру, которая будет отправлена ​​на сервер позже. Проблема, с которой я сталкиваюсь, заключается в том, что VC повторно инициализируется при вводе нового представления, и поэтому структура пользователя также повторно инициализируется. Есть ли способ обойти несколько ViewControllers?Single View Controller для нескольких видов

+0

Как вы переходите к следующему виду? –

+0

Путем запуска segue – Raoul

+0

Segues всегда от одного контроллера представления к другому. Вы должны будете использовать свой единственный VC и выполнять пользовательские анимированные переходы, подобные тем, которые я описал ниже. –

ответ

1

Похоже, вы используете навигационный контроллер для ввода новых копий одного и того же контроллера просмотра, когда ваш пользователь переходит из режима просмотра.

Что я рекомендую делать, так это иметь один контроллер вида (который имеет представление контента) и несколько подклассов UIViews.

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

Оформить заказ "Пример II" от this tutorial. Вместо использования представлений изображений просто используйте свои собственные (подклассы) UIViews.

Here is a related question с более типовым кодом.

0

Если единственная причина для использования одного контроллера вида состоит в том, что вы можете сохранять свои данные на разных экранах, которые вы пытаетесь представить, вероятно, вам следует рассмотреть возможность хранения данных вне класса контроллера вида. Например, используя другой класс с общим, например:

class DataContainer { 

    let sharedInstance = DataContainer() 

    var someString: String? 

} 

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

if let someString = DataContainer.sharedInstance.someString { 
    print(someString) 
} 
0

Вам нужно иметь контроллер родительского контроля, в котором находится дочерний элемент управления childView, принадлежащий вашему пути регистрации. Вот простой учебник о том, как достичь этой функции (в этом случае добавить Sweep Gesture Recognizer для навигации), сделанный Vea Software.

Tutorial

Как это все ваши childViewController могут иметь свой собственный класс для логики, и вы не должны запустить SEGUE между ними ... просто прокручивать друг к другу.