как связать данные текстового поля между двумя представлениями?

Привет и заранее спасибо за любые ответы.

Я работаю с двумя UIViews с Ipad. Если пользователь вносит изменения в текстовое поле в одном представлении, я хочу, чтобы эти изменения отображались в текстовом поле другого представления. У меня есть одно текстовое поле в каждом представлении. В IB я дал им один и тот же тег и делегат текстового поля. У меня есть только один IBOutlet, но я не думаю, что можно подключиться к обоим текстовым полям? Я попробовал IBOutletCollection, но он не поддерживает текстовые поля. Я не знаю, куда идти дальше? Что мне делать? Любые советы приветствуются! спасибо!


person serge2487    schedule 26.03.2011    source источник


Ответы (2)


Ответ привязывает KVO (Key-Value-Observation). Идея, стоящая за этим, такова: один объект наблюдает за изменениями свойства другого объекта.

Ознакомьтесь с KVO и привязками на iPhone на Mindsizzlers.com или взгляните на книгу Cocoa Design Patterns Chapter 32 Bindings and Controllers.

person Nick Weaver    schedule 26.03.2011
comment
да, конечно, но это правильный путь. Это сделает ваш код более читабельным. Вы также можете использовать уведомления, чтобы сообщить своим текстовым полям, что что-то изменилось. Я бы предпочел поместить строку в класс модели, чтобы значение существовало только в одном месте. текстовое поле просто читает и записывает класс/свойство модели. - person Nick Weaver; 26.03.2011

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

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    // Here you can run your logic to detect which textField has changed (using tags)
    // And update them accordingly.
}
person Rog    schedule 26.03.2011
comment
да, у меня уже есть этот метод делегата. Как мне обновить другое текстовое поле без необходимости делать еще одно объявление текстового поля в моем интерфейсе? - person serge2487; 26.03.2011