我想知道当我需要在以下两种可能性之间从另一个视图控制器读取UILabel / UITextField的内容时,被认为是更好的做法:
1)只需在.h文件中为UITextField创建一个IBOutlet,并将其公开给所有人
2)在.h文件中创建一个NSString readonly属性,使其在实现文件中读写,并在每次私有UITextField更改时更新它.
在我看来,第二个选项看起来是一个更好的方法,因为它维护了OOP封装,但是对于我在每个视图控制器中使用的每个UITextField / UILabel来说,似乎有很多工作要做.
思考?
谢谢!
编辑:此外,如果我需要能够从外部设置IBOutlets,但在 – (void)prepareForSegue:方法中.所以我猜第二种选择是唯一的选择吗?
最佳答案 只需在视图控制器中创建getter方法,即可返回所需的数据.例如,对于UITextField:
- (NSString *)getTextFieldText {
return self.myTextField.text;
}
无需以这种方式添加冗余属性(NSString *).
与封装一样,您隐藏了私有数据(即您的IBOutlets)并仅公开其他人所需的数据