2016-04-14 3 views
0

最初のタブで変数を定義すると、通常の方法で他のタブに変数を使用できるようになります。しかし、3番目のタブで変数を定義し、それを最初のタブで使用できるようにするにはどうすればよいでしょうか?ここで最初のタブ内の変数のための通常のセットアップは次のとおりです。varが第2のタブで定義されているときに第1のタブで変数を使用できるようにする

私は、簡単にカードの配列

class LearningViewController: UIViewController { 

    var cards = [Card]() 

    override func viewDidLoad() { 
    super.viewDidLoad() 

    print(cards) ////works all fine 

を使用することができる第二のViewControllerで

class AddCardViewController: UIViewController { 

    var cards = [Card]() 

    override func viewDidLoad() { 
    super.viewDidLoad() 

    cards = [1,2,3,4] 

    let barViewController = self.tabBarController?.viewControllers 
    let svc1 = barViewController![1] as! LearningViewController 
    svc1.cards = self.cards 
    } 

今、私は2番目で変数を定義したいです最初のタブで使用できるようにします。そう、他の方法ラウンド。私は同じ設定を使用しようとしましたが、変数を最初のタブでnilにするとクラッシュします。これを行う方法はありますか、最初のviewControllerですべての変数を定義するだけですか?

+0

あなたは複数のタブで同じデータを操作する必要がある場合、によってアクセスすることができる別のクラスでそれを処理するために良いでしょう両方のViewControllers – PeejWeej

+0

良いアイデア、しかし、興味の問題として、私はまだ、あなたの提案に取り組んで上記の – kangarooChris

+0

@ PEEJWEEJの解決策があるかどうかを知りたいと思いますが、確信していますが、同じ問題は、私は2番目のViewControllerでクラスのオブジェクトを定義し、最初のViewControllerでオブジェクトを使用する必要がある場合はどうすればいいですか?私の質問は理にかなっていますか?私は初心者です – kangarooChris

答えて

0

私は最も簡単な解決策は、問題の変数を呼び出す前に2番目のタブを強制的に読み込むことだと思います。これを行う最も力強い方法は、TabBarController内のすべてのタブをロードするAddCardViewControllerにfuncを作成することです。

func loadAllTabs() { 
    if let viewControllers = self.tabBarController?.viewControllers { 
     for viewController in viewControllers { 
      viewController.view 
     } 
    } 
} 

とのviewDidLoadでそれを呼び出す:

override func viewDidLoad() { 
    super.viewDidLoad() 
    loadAllTabs() 
} 
関連する問題