2017-10-19 6 views
0

私はiOS開発の初心者ですが、最近は初心者向けのチュートリアルに沿っています。3つの視点コントローラの切り替え

ボタンをクリックして1つのVCから別のVCに移動したいとしましょう。そのため、1つのViewControllerから別のViewController(モーダルセグ)に移動する3つの方法があります。メインストーリーボードに

  1. は、私はプログラム的

    @IBAction func logInButtonDidPressed(_ sender: Any) { 
    
    
    
    // modal transition to VC2 
    
    let viewController2 = 
    storyboard?.instantiateViewController(withIdentifier: 
    "ViewController2") as! ViewController2 
    
    present(viewController2, animated: true, completion: nil) 
    
    
    
    } 
    
  2. 以下のコードを実行することによって、

  3. programmaticaly本モーダルを先ビュー・コントローラをTH及び選択ボタンからの制御とドラッグをクリック、実行セグ関数を使用して、

    @IBAction func logInButtonDidPressed(_ sender: Any) { 
    
    
    performSegue(withIdentifier: "toSecondViewController", sender: self) 
    
    
    
    } 
    

は同じですか?異なるケースに使用されていますか?事前:)で

おかげ

答えて

2

はい、類似しています。私が思うに明らかな違いは、データが通過することです。第一及び第三の1次コントローラにデータを渡すために、以下の方法を使用して、同じである:

let viewController2 = storyboard?.instantiateViewController(withIdentifier: 
"ViewController2") as! ViewController2 

viewController2.someProperty = someValue 

present(viewController2, animated: true, completion: nil) 

// MARK: - Navigation 

// In a storyboard-based application, you will often want to do a little preparation before navigation 
override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    // Get the new view controller using segue.destinationViewController. 
    // Pass the selected object to the new view controller. 
    if let viewController2 = segue.destination as? ViewController2 { 
     viewController2.someProperty = someValue 
    } 
} 

第二の移行のための次のコントローラを作成するときは、データを直接設定します

2

マニュアル、プレゼンテーションに比べていくつかの利点があるように私は、seguesを使用する:あなたは任意のビューコントローラに現在のビューコントローラを終了するには、アンワインドseguesを作成することができます

  • 階層内にある。

  • ワンクリックでセグの3Dタッチサポートを追加できます。

最初と最後の方法で同じ結果が得られます。私は、可能であればクリックとドラッグでセグを作成します。移行を実行する前にデータ検証などを行う必要がある場合は、performSegueメソッドを手動で呼び出す必要があります。

関連する問題