使用Singleton在Watchkit中传递数据

时间:2015-04-27 15:47:18

标签: swift singleton watchkit

我之前在IOS中使用了Singleton,但同样的方法在watchkit中对我不起作用...任何想法为什么我的第二个接口控制器显示0(初始化值)而不是输入的数字第一接口控制器?

class Singleton {

 static let instance = Singleton()

var salesPriceAsInt: Int = 0

}

    import WatchKit
import Foundation


class InterfaceController: WKInterfaceController {

    override func awakeWithContext(context: AnyObject?) {
        super.awakeWithContext(context)

        // Configure interface objects here.
    }

    var salesPrice = ""


    @IBOutlet weak var salesPriceLabel: WKInterfaceLabel!

    func addCharacter(char: String) {
        salesPrice += char
    }


    @IBAction func zeroButton() {
        addCharacter("0")
        salesPriceLabel.setText(salesPrice)
    }

    @IBAction func oneButton() {
         addCharacter("1")
         salesPriceLabel.setText(salesPrice)
    }

    @IBAction func twoButton() {
        addCharacter("2")
         salesPriceLabel.setText(salesPrice)
    }

    @IBAction func threeButton() {
          addCharacter("3")
         salesPriceLabel.setText(salesPrice)
    }

    @IBAction func fourButton() {
          addCharacter("4")
         salesPriceLabel.setText(salesPrice)
    }

    @IBAction func fiveButton() {
          addCharacter("5")
         salesPriceLabel.setText(salesPrice)
    }

    @IBAction func sixButton() {
          addCharacter("6")
         salesPriceLabel.setText(salesPrice)
    }

    @IBAction func sevenButton() {
          addCharacter("7")
         salesPriceLabel.setText(salesPrice)
    }

    @IBAction func eightButton() {
          addCharacter("8")
         salesPriceLabel.setText(salesPrice)
    }

    @IBAction func nineButton() {
          addCharacter("9")
         salesPriceLabel.setText(salesPrice)
    }


    @IBAction func segueButton() {
          Singleton.instance.salesPriceAsInt = salesPrice.toInt()!
          salesPriceLabel.setText("\(Singleton.instance.salesPriceAsInt)")
    }
import WatchKit
import Foundation


class SecondPageInterfaceController: WKInterfaceController {



    @IBOutlet weak var totalSaleCommissionLabel: WKInterfaceLabel!


    override func awakeWithContext(context: AnyObject?) {
        super.awakeWithContext(context)

    }

    @IBAction func secondPageButton() {
        totalSaleCommissionLabel.setText("\(Singleton.instance.salesPriceAsInt)")

    }







    override func willActivate() {
        // This method is called when watch view controller is about to be visible to user
        super.willActivate()

    }

    override func didDeactivate() {
        // This method is called when watch view controller is no longer visible
        super.didDeactivate()

    }

1 个答案:

答案 0 :(得分:1)

结果显示Singleton的工作原理,没有启用按钮同时(1)存储到Singleton和(2)segue到我的第二个接口控制器。为了解决这个问题,我搬了

Singleton.instance.salesPriceAsInt = salesPrice.toInt()!

到didActivate方法