Передача текста из текстового поля в другой ViewController

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

Итак, вот вопрос: как можно передать текст из textField в одном ContainerView в другое textField в другом ContainerView? Например, пользователь вводит что-то в textFeildOne в ContainerViewOne, затем он переключается на другой ContainerViewTwo, используя Segmented Controll, и этот текст появляется в textFieldTwo там

Я не мог понять, как это сделать с сегментами, так что, пожалуйста, не могли бы вы мне помочь?


person Oleg Blanutsa    schedule 11.07.2017    source источник
comment
Добро пожаловать на https://stackoverflow.com/! Ожидается, что на этом сайте вы попытаетесь написать код самостоятельно. После дополнительных исследований, если у вас возникла проблема, вы можете опубликовать то, что вы пробовали, с четким объяснением того, что не работает, и предоставив минимальный, Полный и поддающийся проверке пример. Предлагаю прочитать Как задать вопрос. Удачи!   -  person MorganFreeFarm    schedule 11.07.2017
comment
вы можете использовать уведомление для отправки данных. но я бы предложил использовать контроллер представления вместо представления контейнера, чтобы вы могли использовать такие методы представления, как viewDidLoad (), viewWillAppear ()   -  person Abdul Karim    schedule 11.07.2017
comment
MVC - очень распространенный способ структурирования программы. Если вы создаете объект Model для хранения общей информации о состоянии, вам не нужно беспокоиться о передаче данных между объектами, которые приходят и уходят ... каждый контроллер может запрашивать то, что ему нужно, и тогда, когда это необходимо.   -  person Phillip Mills    schedule 11.07.2017


Ответы (1)


Вы можете использовать протокол и делегирование для связи из двух представлений вашего приложения. Если вы не знаете, о чем я говорю, я предлагаю вам тоже проверить это ссылка. когда вы реализовали собственный протокол ur и делегат / делегатов, вы можете вызвать свой метод (определенный в вашем протоколе) в выходных данных текстового поля с именем «valueChanged».

person Leonardo    schedule 11.07.2017
comment
Проблема в том, что у меня есть 4 ContainerViews и много textField внутри них, так что, я думаю, это будет сложно. У меня уже есть ссылка на все эти ContainerViews в моем основном ViewController через prepare (для segue: sender :) для других целей. Я попытался реализовать то, что хочу, с помощью операторов if / case, но у меня ничего не вышло. Может, есть другой выход, без делегирования? - person Oleg Blanutsa; 11.07.2017
comment
Что ж, решил попробовать твой метод. Но что вы имеете в виду, говоря, что можете вызывать свой метод (определенный в вашем протоколе) в выходных данных текстового поля с именем valueChanged? Я должен добавить метод в textField с измененным значением события, и внутри этой функции реализовать функцию из протокола, которая изменяет значение textField. Я прав? - person Oleg Blanutsa; 12.07.2017
comment
Да, но вам не нужно реализовывать метод внутри действия textField, а в классе, в который вы хотите получать свои данные. Внутри метода textFlied вам нужно только вызвать метод делегатом следующим образом: delegate.nameOfYourMethod (data) 'data' - это то, что вы хотите получить в классе, в котором вы реализовали метод протокола, который вы определили. - person Leonardo; 13.07.2017
comment
Думаю, я понял, что вы сказали ... но по некоторым причинам это не работает. Можете проверить, пожалуйста, мою новую тему здесь, где Показываю свой код? Я уже реализовал все это - person Oleg Blanutsa; 13.07.2017