0

私は2つのコンテナBとCと2つのそれぞれのuiviewcontrollerを持つ親クラスAを持っています。私はUISegmentContolを使用して2つのコントローラを切り替えています。親クラスには、UiViewController BとCに渡すオブジェクト「変数」があります。UISegmentControlを介してchildViewControllerにデータを渡す

My DouBt: 親クラスから2つの子クラスにオブジェクトを共有するにはどうすればよいですか? 親クラスの子クラスの参照を作成するにはどうすればよいですか?

class A: UIViewController { 

@IBOutlet weak var segment: UISegmentedControl! 
@IBOutlet var containerSearch: UIView! 
@IBOutlet var containerAdvancedSearch: UIView! 
var variables: Variables? 

override func viewDidLoad() { 
    super.viewDidLoad() 
    let a = variables?.bankNameLong 
    print("from " + a! + "") 
} 

@IBAction func actionSwitchSegments(sender: AnyObject) { 
    if sender.selectedSegmentIndex == 0 { 
     UIView.animateWithDuration(0.5, animations: { 
      self.containerChangePassword.alpha = 1 
      self.containerAbout.alpha = 0 
     }) 
    } else { 
     UIView.animateWithDuration(0.5, animations: { 
      self.containerChangePassword.alpha = 0 
      self.containerAbout.alpha = 1 
     }) 
    } 

} 



    if segue.identifier == "segSearch"{ 
     let newViewController: vConSearch = segue.destinationViewController as! vConSearch 
     newViewController.Variables = self.Variables 
    }else if segue.identifier == "segAdvancedSearch"{ 
     let newViewController: vConAdvancedSearch = segue.destinationViewController as! vConAdvancedSearch 
     newViewController.Variables = self.Variables 
    } 

私はセグエを使用してみましたが、それは唯一の子のコントローラで動作します。 しかし、segueを実行すると、UiSegmentControlをクリックするたびに新しいインスタンスが作成されることはありません。

+0

こんにちは@Darth Vaderさんがお手伝いできますか? performSegueWithIdentifierを呼び出す場所からの – Cloy

+0

??親クラスの – Ujjwal

+0

vConSettings – Cloy

答えて

1

あなたがどこかに希望のViewController

self.performSegueWithIdentifier("segSearch", sender: sender) 

に移動し、その後、デリゲート

override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) { 

    if segue.identifier == "segSearch"{ 
     let newViewController: vConSearch = segue.destinationViewController as! vConSearch 
     newViewController.Variables = self.Variables 
    }else if segue.identifier == "segAdvancedSearch"{ 
     let newViewController: vConAdvancedSearch = segue.destinationViewController as! vConAdvancedSearch 
     newViewController.Variables = self.Variables 
    } 
} 

もチェックし、それが動作しない場合は、コードをデバッグするためにいくつかのブレークポイントを置くために、このコードを記述する必要があります関数が呼び出されているかどうか、そして変数が適切に割り当てられているかどうか。

関連する問題