【发布时间】:2013-07-30 02:17:50
【问题描述】:
我的 viewcontroller 类用于我唯一的当前视图,另一个类具有用于我的数学逻辑的静态方法。 ViewController 类有一个标签的 IBOutlet。如何从我的 Logic 类的函数中引用此插座?
【问题讨论】:
标签: objective-c viewcontroller iboutlet
我的 viewcontroller 类用于我唯一的当前视图,另一个类具有用于我的数学逻辑的静态方法。 ViewController 类有一个标签的 IBOutlet。如何从我的 Logic 类的函数中引用此插座?
【问题讨论】:
标签: objective-c viewcontroller iboutlet
您可以像传递任何其他变量一样将指针传递给逻辑类,但我不建议直接访问 IBOutlet 属性。
我的建议是让逻辑类返回值并让控制器根据需要更新标签,或者如果它涉及不立即返回的后台处理,请使用委托模式。这样,当数据准备好或计算完成时,逻辑类会通知控制器,然后控制器可以根据需要更新 UI。
查看 iOS 协议以定义委托类的结构 :)
【讨论】:
您不应该允许您的 Logic 类访问 UI 控件,因为它不遵循 Model-View-Controller 模式,这是保持您的代码有条理,以便在您的项目变得更加复杂时更容易遵循。相反,您可能希望您的 ViewController 在 UI 和 Logic 类之间进行通信。
例如,如果您在视图底部有一个 计算 按钮供用户点击,则该点击应由ViewController 处理。 ViewController 将调用您的 Logic 类中的一个函数,该函数可能返回一个值。然后ViewController 将采用该值并将其设置为标签的文本。这是一个说明这个想法的sn-p代码:
- (IBAction) calculateSomeValue: (id) sender {
int result = [Logic calculateValue];
[self.label setText: [NSString stringWithFormat: @"Your result is: %d", result]];
}
【讨论】: