2016-09-29 67 views
11

Xcode 8編譯時說要更改實例化viewcontroller帶標識符來簡單地實例化視圖控制器。我做到了,爲什麼會出現兩個錯誤?Swift 3,Xcode 8實例化視圖控制器不工作

我正在使用Swift 3.我想以編程方式更改頁面。我已閱讀了許多關於該主題的其他問題。他們都使用具有標識符的實例化視圖控制器。他們沒有采用新的語言。

@IBAction func switchPage(_ sender: UIButton) { 

    let storyboard = UIStoryboard(name: "Main", bundle: nil) 
    let viewController = 
storyboard.instantiateViewController("secondViewController") as! 
UIViewController 
    self.presentViewController(secondViewController, animated: true, 
completion: nil)  

} 

謝謝。我按照建議更改了代碼,並且只收到一個錯誤:可選類型'UIStoryboard?'的值不打開;你的意思是使用'!'要麼 '?'?我應該在某處添加感嘆號嗎?

import UIKit 

class ViewController: UIViewController { 

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a 
nib. 
} 

@IBAction func ch(_ sender: UIButton) { 



    let viewController = 
storyboard.instantiateViewController(withIdentifier: 
"secondViewController") as! UIViewController 
    self.present(viewController, animated: true) 



} 




override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 



} 

回答

37

請嘗試這樣。

let storyboard = UIStoryboard(name: "Main", bundle: nil) 
let viewController = storyboard.instantiateViewController(withIdentifier :"secondViewController") as! UIViewController 
self.present(viewController, animated: true)  
+1

感謝。這很接近,但我得到一個錯誤。有什麼建議麼? – Aleric

+0

@Aleric我從來沒有告訴你刪除這條線'let storyboard = UIStoryboard(name:「Main」,bundle:nil)'檢查編輯後的答案。 –

+0

它的工作原理。偉大的工作Nirav。別緊張。 – Aleric

2

它是由這個工作對我來說:

let vc = UIStoryboard(name: "ZWLStaticTabVc", bundle: nil).instantiateInitialViewController() 
self.navigationController?.pushViewController(vc!, animated: true) 
3

它的工作對我來說:

let gameScene = UIStoryboard(name: "Main", bundle:nil).instantiateViewController(withIdentifier: "ViewController") as UIViewController 
     let appDelegate = (UIApplication.shared.delegate as! AppDelegate) 
     appDelegate.window?.rootViewController = gameScene 
相關問題