【问题标题】:How do you access the outlets of the main view controller from a logic class?如何从逻辑类访问主视图控制器的出口?
【发布时间】:2013-07-30 02:17:50
【问题描述】:

我的 viewcontroller 类用于我唯一的当前视图,另一个类具有用于我的数学逻辑的静态方法。 ViewController 类有一个标签的 IBOutlet。如何从我的 Logic 类的函数中引用此插座?

【问题讨论】:

    标签: objective-c viewcontroller iboutlet


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      您不应该允许您的 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]];
      }
      

      【讨论】:

        猜你喜欢
        • 2016-06-28
        • 2017-09-12
        • 1970-01-01
        • 2011-08-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多