XCode 11 刪除 main.storyboard (保留SceneDelegate))

問題

在 XCode 11 中,新建一個項目,默認(rèn)會創(chuàng)建 main.storyboard 文件,如果我們想要手寫布局和 VC,就需要刪除 storyboard。網(wǎng)上搜了一些現(xiàn)有的方案,都是直接連 SceneDelegate 都刪除了,此處記錄一種保留 SceneDelegate 的方案。

解決方案

分為三步

  1. 刪除 storyboard 文件
  2. 刪除配置項
  3. 創(chuàng)建 Window 和 VC

刪除 storyboard

這步很簡單,直接刪除即可。

刪除配置項

在 info.plist 中,刪除兩個項目:

  1. Main storyboard file base name
  2. Application Scene Manifest -> Scene Configuration -> Application Scene Role -> Item 0 -> Storyboard name

創(chuàng)建 Window 和 VC

修改 SceneDelegate 的 willConnectTo 方法

func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
    // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`.
    // If using a storyboard, the `window` property will automatically be initialized and attached to the scene.
    // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead).
    guard let windowScene = (scene as? UIWindowScene) else { return }
        
    let window = UIWindow(windowScene: windowScene)
    let nav = UINavigationController()
    nav.pushViewController(HomeViewController(), animated: false)
    window.rootViewController = nav
    self.window = window
    window.makeKeyAndVisible()
}

其中,rootViewController 根據(jù)自己的需要指定。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容