2015-04-27 2 views
0

Я использовал Singleton в IOS с успехом раньше, но тот же подход не работает для меня в watchkit ... любая идея, почему мой второй контроллер интерфейса отображает 0 (инициализированное значение) вместо чисел, введенных в первый контроллер интерфейса?Использование Singleton для передачи данных в Watchkit

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

Оказывается Singleton работает, что не является благоприятной кнопки для обоих (1) магазин к Singleton и (2) Segue к мой второй контроллер интерфейса. Чтобы обойти эту проблему, я переехал

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

методу didActivate

Смежные вопросы