2017-10-19 52 views
0

我是iOS開發人員的初學者,最近我只是按照初學者的教程進行操作。視圖控制器轉換的3種方式

讓我說我想從一個VC移動到另一個VC通過點擊一個按鈕,所以我只是發現有三種方法可以從一個ViewController移動到另一個ViewController(模態segue)。

  1. 在主要故事板

    ,我只是單擊控制並拖動從按鈕TH目的地視圖控制器和選擇本模態

  2. programmaticaly,通過實施下面

    @IBAction func logInButtonDidPressed(_ sender: Any) { 
    
    
    
    // modal transition to VC2 
    
    let viewController2 = 
    storyboard?.instantiateViewController(withIdentifier: 
    "ViewController2") as! ViewController2 
    
    present(viewController2, animated: true, completion: nil) 
    
    
    
    } 
    
  3. 編程代碼,通過使用執行segue功能

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

他們是一樣的嗎?或者它用於不同的情況?

感謝提前:)

回答

2

是的,它們是相似的。而我認爲的明顯差異是數據傳遞。在第一和第三個被相同,用下面的方法將數據傳遞到下一個控制器:

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

我會用塞格斯,因爲有一定的優勢比手動演示:

  • 您可以創建開卷塞格斯當前視圖控制器退出任何視圖控制器在層次結構中。

  • 只需點擊一下鼠標,即可添加3D觸控支持。

第一種和最後一種方法產生相同的結果。只要有可能,我會通過單擊和拖動來創建賽段。如果您在執行轉換之前需要執行一些數據驗證或其他內容,則必須手動調用performSegue方法。

相關問題