2016-09-29 8 views
11

Xcode 8 при компиляции говорит об изменении экземпляра viewcontroller с идентификатором, чтобы просто создать экземпляр контроллера представления. Я сделал это, почему это дает две ошибки?Swift 3, Xcode 8 Instantiate View Controller не работает

Я работаю с 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 (имя:« Main », bundle: nil)' проверить отредактированный ответ. –

+0

Это работает. Отличная работа Нира. Не принимайте это близко к сердцу. – 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 
Смежные вопросы