Публичный против частного IBOutlets

Интересно, что считается лучшей практикой в ​​ситуации, когда мне нужно прочитать содержание UILabel / UITextField из другого вида контроллера между двумя следующими возможностями:

1) Просто создайте IBOutlet к UITextField в.h файле и сделать его общедоступным для всех
2) Создать NSString свойство readonly в файле.h, сделайте его readwrite в файле реализации и обновляйте его каждый раз, когда UITextField изменения.

На мой взгляд, второй вариант выглядит лучше, потому что он поддерживает инкапсуляцию ООП, но кажется, что с каждым UITextField / UILabel Я имею в каждом контроллере представления.

Мысли? Спасибо!

РЕДАКТИРОВАТЬ: Кроме того, если мне нужно иметь возможность установить IBOutlets снаружи, но в -(void)prepareForSegue: метод. Таким образом, я думаю, что второй вариант является единственным вариантом?

1 ответ

Просто создайте методы получения в контроллере представления для возврата необходимых данных. Например для UITextField:

- (NSString *)getTextFieldText {
   return self.myTextField.text;
}

Не нужно добавлять избыточное свойство (NSString *) таким образом. Как и в случае инкапсуляции, вы скрываете личные данные (т.е. ваши IBOutlets) и открываете только те данные, которые требуются другим

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