在Watchkit中以分页为基础的界面共享数据

时间:2015-03-13 23:11:34

标签: watchkit

我需要与第一页的所有页面共享一个字符串。 我试图用didDeactive()来做这件事,但它没有用。 是否有可能做到这一点?

1 个答案:

答案 0 :(得分:0)

说出你真正要做的事情有点困难,所以我要推断一下。我“想”你试图从第一页设置一些共享值,并能够在其他页面中使用该值。如果是这种情况,那么您可以执行以下操作:

class SharedData {
    var value1 = "some initial value"
    var value2 = "some other initial value"

    class var sharedInstance: SharedData {
        struct Singleton { static let instance = SharedData() }
        return Singleton.instance
    }

    private init() {
        // No-op
    }
}

class Page1InterfaceController: WKInterfaceController {
    func buttonTapped() {
        SharedData.sharedInstance.value1 = "Something new that the others care about"
    }
}

class Page2InterfaceController: WKInterfaceController {
    @IBOutlet var label: WKInterfaceLabel!

    override func willActivate() {
        super.willActivate()

        self.label.setText(SharedData.sharedInstance.value1)
    }
}

SharedData对象是一个单一类,它是一个全局对象。任何人都可以从任何地方访问它在我提供的小示例中,Page1InterfaceController正在处理buttonTapped事件并将value实例的SharedData属性更改为新值。然后,当滑动到Page2InterfaceController时,新值将显示在label

这是在对象之间共享数据的一个非常简单的示例。希望这有助于您朝着正确的方向前进。