問題
在 XCode 11 中,新建一個項目,默認(rèn)會創(chuàng)建 main.storyboard 文件,如果我們想要手寫布局和 VC,就需要刪除 storyboard。網(wǎng)上搜了一些現(xiàn)有的方案,都是直接連 SceneDelegate 都刪除了,此處記錄一種保留 SceneDelegate 的方案。
解決方案
分為三步
- 刪除 storyboard 文件
- 刪除配置項
- 創(chuàng)建 Window 和 VC
刪除 storyboard
這步很簡單,直接刪除即可。
刪除配置項
在 info.plist 中,刪除兩個項目:
- Main storyboard file base name
- 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ù)自己的需要指定。