2016-09-29 19 views
11

Xcode 8 podczas kompilacji mówi, aby zmienić instancję viewcontroller z identyfikatorem na prosty, natychmiastowy kontroler widoku. Zrobiłem to, dlaczego daje dwa błędy?Swift 3, Xcode 8 Instantiate View Controller nie działa

Pracuję z Swift 3. Chcę zmieniać strony programowo. Przeczytałem wiele innych pytań na ten temat. Wszystkie używają natychmiastowego kontrolera widoku z identyfikatorem. Nie przyjęli nowego języka.

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

} 

Dzięki. Zmieniłem kod zgodnie z sugestią i otrzymałem tylko jeden błąd: wartość opcjonalnego typu "UIStoryboard?" nieopakowany; czy chciałeś użyć "!" lub "?"? Czy powinienem dodać gdzieś wykrzyknik?

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. 
} 



} 

Odpowiedz

37

Spróbuj tego.

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

Dzięki. Jest blisko, ale dostaję jeden błąd. Jakieś sugestie? – Aleric

+0

@Aleric Nigdy nie powiedziałem ci, aby usunąć tę linię 'let storyboard = UIStoryboard (name:" Main ", bundle: nil)' sprawdź edytowaną odpowiedź. –

+0

To działa. Świetna robota Nirav. Spokojnie. – Aleric

2

To pracował dla mnie przez to:

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

To pracował dla mnie:

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