Публичный против частного 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) и открываете только те данные, которые требуются другим