Передача данных между двумя интерфейсными контроллерами
Я хочу передать строку между двумя интерфейсными контроллерами. На InterfaceController1
Я хочу создать переменную, такую как:
var level: String = ("easy")
И тогда сможете получить доступ к этой переменной на InterfaceController2
,
В настоящее время есть только один ответ на переполнение стека, но он был создан, когда Swift 1 вышел, и я не могу найти какие-либо актуальные ответы.
Я бы предпочел не использовать глобальные переменные, так как я знаю, что они не рекомендуются.
1 ответ
Лучший способ достичь этого без использования глобальных или синглтонов (которые в данном случае являются глобальными) - это использовать шаблон делегата. В InterfaceController2 создайте делегат типа InterfaceController1 и установите его при отображении InterfaceController2. Затем, когда вам нужно значение, вы можете вызвать InterfaceController1Delegate.level для доступа к значению.
Возможно, вы неправильно решаете проблему. Судя по звучанию ваших имен и значений, это похоже на ваши значения состояния удержания для приложения в контроллерах представления. Если это так, я бы придерживался более MVC-дизайна и оставлял бы их в классе состояний или классах, которые передаются или могут быть доступны из различных контроллеров представления, которые могут в них нуждаться.