如何从逻辑类访问主视图控制器的插座?

时间:2013-07-30 02:17:50

标签: objective-c viewcontroller iboutlet

我的viewcontroller类是我唯一的当前View,另一个类是我的数学逻辑的静态方法。 ViewController类有一个标签的IBOutlet。如何在Logic类的功能中引用此插座?

2 个答案:

答案 0 :(得分:1)

您可以像任何其他变量一样将指针传递给逻辑类,但我不建议直接访问IBOutlet属性。

我建议的是,让逻辑类返回值并让控制器根据需要更新标签,或者如果它涉及不立即返回的后台处理,请使用委托模式。这样,逻辑类将在数据准备就绪或计算完成时通知控制器,然后控制器可以根据需要更新UI。

查看iOS协议以定义委托类的结构:)

答案 1 :(得分:0)

您不应该允许 Logic 类访问UI控件,因为它不遵循模型 - 视图 - 控制器模式,这是一种智能的方法您的代码有条理,以便随着您的项目变得更加复杂,更容易。相反,您希望ViewController为您在UI和Logic课程之间进行通信。

例如,如果您在视图底部有一个计算按钮,用户点击,则应由ViewController处理。 ViewController会调用Logic类中可能返回值的函数。然后ViewController将获取该值并将其设置为标签的文本。这里有一段代码说明了这个想法:

- (IBAction) calculateSomeValue: (id) sender {
    int result = [Logic calculateValue];
    [self.label setText: [NSString stringWithFormat: @"Your result is: %d", result]];
}