Передача данных между двумя интерфейсными контроллерами

Я хочу передать строку между двумя интерфейсными контроллерами. На InterfaceController1 Я хочу создать переменную, такую ​​как:

var level: String = ("easy")

И тогда сможете получить доступ к этой переменной на InterfaceController2,

В настоящее время есть только один ответ на переполнение стека, но он был создан, когда Swift 1 вышел, и я не могу найти какие-либо актуальные ответы.

Я бы предпочел не использовать глобальные переменные, так как я знаю, что они не рекомендуются.

1 ответ

Решение

Лучший способ достичь этого без использования глобальных или синглтонов (которые в данном случае являются глобальными) - это использовать шаблон делегата. В InterfaceController2 создайте делегат типа InterfaceController1 и установите его при отображении InterfaceController2. Затем, когда вам нужно значение, вы можете вызвать InterfaceController1Delegate.level для доступа к значению.

Возможно, вы неправильно решаете проблему. Судя по звучанию ваших имен и значений, это похоже на ваши значения состояния удержания для приложения в контроллерах представления. Если это так, я бы придерживался более MVC-дизайна и оставлял бы их в классе состояний или классах, которые передаются или могут быть доступны из различных контроллеров представления, которые могут в них нуждаться.

Другие вопросы по тегам