2016-12-12 18 views
0

私はブール変数を持つスーパークラスを持っていると私は、サブクラスの間でそれを共有したいと思います(参照することにより、それを渡す)Swift 3のサブクラス間で変数を共有する方法は?

Class parentClass: UIViewController { 
    var sharedVariable: Bool = false 
} 

Class firstChild: parentClass { 

    @IBAction func myButtonTouched(_ sender: Any) { 
     sharedVariable = true 
    } 
} 

Class secondChild: parentClass { 
    print(sharedVariable) 
} 

しかし、私はFirstClassの中sharedVariableを変更すると、それはsecondClassのためにそれを変更する文句を言いません。

私はあなたがこの(私は、コードとコードのスタイルを少し修正)のように、静的変数を使用することができます任意の助け

+3

ここに示されているコードもコンパイルされませんので、誰があなたの問題を検証していない、またそれが呼び出すことはありません、ここでのコードは、特に(それを再現していないとして、それは問題が何である明確であることができます'myButtonTouched' evenもしそれがコンパイルされたら、それはしません)。私は 'sharedVariable'が各インスタンスの代わりに1つの変数であることを意味すると推測できます。その場合、宣言の前に' static'を置き、 'parentClass.sharedVariable'にアクセスできます。 – Arkku

+0

これらのクラスのインスタンスを作成する方法を示し、プロパティーがどのように更新され、どのように値が期待どおりになっていないかを明確に説明する必要があります。 – rmaddy

+0

[同じファイル内のビューコントローラ間のデータの受け渡し]の可能な複製(http://stackoverflow.com/questions/29575020/passing-data-in-swift-between-view-controllers-in-same-file) – Cristik

答えて

2

をいただければ幸いです:テストするために、次に

class ParentClass: UIViewController { 
    static var sharedVariable: Bool = false 
} 

class FirstChild: ParentClass { 

    @IBAction func myButtonTouched(_ sender: Any) { 
     ParentClass.sharedVariable = true 
    } 
} 

class SecondChild: ParentClass { 
    func test() { 
     print(ParentClass.sharedVariable) 
    } 
} 

、あなたが行うことができます。

let secondChild = SecondChild() 
secondChild.test() // prints false 
let firstChild = FirstChild() 
firstChild.myButtonTouched(firstChild) 
secondChild.test() //prints true 
+0

これは明らかに質問に答えるので、なぜあなたがdownvoted理由を説明するといいでしょう。 – Daniel

+0

私はあなたの答えを投票しなかった。実際にそれは私の質問への答えです。ありがとう – Besat

+0

@誰か他の人がしたように、私は自分のエラーから学ぶのが好きですが、気にしません;) – Daniel

関連する問題