web-dev-qa-db-fra.com

Swift 3, Xcode 8 Instantiate View Controller ne fonctionne pas

Xcode 8 lors de la compilation dit de changer instancier viewcontroller avec identifiant pour simplement, instancier le contrôleur de vue. Je l'ai fait, pourquoi cela donne-t-il deux erreurs?

Je travaille avec Swift 3. Je veux changer de page par programme. J'ai lu beaucoup d'autres questions sur le sujet. Tous utilisent le contrôleur de vue instantanée avec l'identifiant. Ils n'ont pas 't adopté la nouvelle langue.

@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)    

}

Merci. J'ai changé le code comme suggéré et je reçois une seule erreur: Valeur du type facultatif 'UIStoryboard?' non déballé; vouliez-vous utiliser "!" ou '?'? Dois-je ajouter un point d'exclamation quelque part?

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

Essayez comme ça.

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

Ça a marché pour moi:

 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

Cela a fonctionné pour moi par ceci:

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