web-dev-qa-db-ja.com

Swift 3、Xcode 8 Instantiate View Controllerが機能していません

Xcode 8のコンパイル時に、インスタンス化viewcontrollerを識別子で変更して、単純にView Controllerをインスタンス化するように指示されます。私はそれをしました、なぜそれは2つのエラーを与えるのですか?

私は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)    

}

ありがとう。提案されたとおりにコードを変更しましたが、エラーが1つだけ表示されました。オプションタイプの値「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.
}



}
15
Aleric

このようにしてみてください。

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

それは私のために働いた:

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

これによって私のために働いた:

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