IBOutlet是否应仅用于界面UI元素?

时间:2010-09-10 14:39:32

标签: iphone objective-c ios4

基本问题是关于基本iOS MVC应用程序的结构..

我知道IBOutlets用于访问视图元素,如按钮和标签等,以及修改或获取它们的值。

使用IBOutlet从视图中访问应用程序中的另一个对象是否正常??

例如......

@interface CustomView : UIView {
    IBOutlet Person *person;
}

我们是否应该使用人物(型号)的插座,以便视图显示有关此人的信息?

或者视图是否应该直接实例化Person对象而不使用IBOutlets和Interface Builder。

感谢您的澄清。

*出于某种原因,我正在遵循的教程将Model类放入nib中。

2 个答案:

答案 0 :(得分:3)

IBOutlet只不过是一个注释,它告诉Interface Builder哪个属性和/或实例变量应该在IB中可见(因此可以连接)。您通常需要将UIViewController的一个或多个子类连接到给定nib文件中的视图实例,但是根据模型 - 视图 - 控制器设计模式,您应该避免将View对象直接连接到模型对象。 / p>

Apple在iOS Tutorial中概述了这种设计模式。您还应该阅读Apple的Human Interface Guidelines - 它将真正为您解释很多这类问题。

答案 1 :(得分:2)

除非您想在Interface Builder中将对象从nib绑定到此变量,否则不必使用IBOutlet。编译器忽略IBOutlet“关键字”(它不是一个真正的关键字,而是一个空的预处理器宏),它只是告诉接口构建器它可以连接到在nib中实例化的对象。

如果您需要nib中的Person对象,请在Interface Builder中创建它并将其连接到插座。如果您不需要从笔尖访问它,您也可以在代码中创建它,而不是将其作为插座。