簡體   English   中英

如何從Storyboard創建初始化VC?

[英]How create init VC from Storyboard?

我必須從AppDelegate中的UIStoryboard創建初始化VC。

我使用了.instantiateInitialViewController()但我總是得到nil。

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    // Override point for customization after application launch.
    self.window = UIWindow(frame: UIScreen.main.bounds)
    let storyBoard: UIStoryboard = .init(name: "Storyboard", bundle: nil)
    if let vc = storyBoard.instantiateInitialViewController() {
        window?.rootViewController = vc
        window?.makeKeyAndVisible()
    }

    return true
}

我的項目:

在此處輸入圖片說明

我沒有“ ViewController”文件(也沒有課程)。 為什么我總是在vc中得到“ nil”? 它是如何工作的? 請解釋。

storyBoard.instantiateInitialViewController返回nil的最可能原因是因為您的故事板沒有初始視圖控制器。 您可以在情節提要中選擇一個VC,然后選中“是初始視圖控制器”以使其成為初始視圖控制器:

在此處輸入圖片說明

請注意,如果在項目設置中將情節提要板設置為“主界面”,則初始VC將自動顯示。

為避免這種情況,請將此設置更改為空字符串:

在此處輸入圖片說明

或者,您可以在身份檢查器中為您的VC提供標識符:

在此處輸入圖片說明

並使用instantiateViewController(withIdentifier)代替

storyBoard.instantiateViewController(withIdentifier: "MyVC")

嘗試這個..

let navigationController = self.window?.rootViewController as! UINavigationController
    let storyboard = UIStoryboard(name: "Storyboard", bundle: nil)
    let messageVC = storyboard.instantiateViewController(withIdentifier: "YourViewControllerID")
    navigationController.pushViewController(messageVC, animated: true)

嘗試這個。 我總是使用這些代碼在視圖控制器之間導航,

  let vc = storyboard?.instantiateViewController(withIdentifier: "ViewControllerStoryBoardId") as! YourViewControllerClass
        vc.page_idenifier = "Home page"//eg:- Passing data
        navigationController?.pushViewController(vc, animated: true)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM