
控制 ios app 的第一個畫面
- Select a language for the TTS:
- UK English Female
- UK English Male
- US English Female
- US English Male
- Australian Female
- Australian Male
- Language selected: (auto detect) - EN
Play all audios:

從 iOS 13 開始,因為 SwiftUI 的發明,我們除了從傳統的 storyboard 設計 App 的第一個畫面,也可以指定 SwiftUI 的 view 當第一個畫面。接下來就讓我們認識這兩種方法的差異吧。 以 SWIFTUI 的 VIEW 當第一個畫面 * 新增 SWIFTUI VIEW 製作第一個畫面 取名 PrinceView,步驟可參考以下連結。 新增
SWIFTUI 畫面 點選 XCODE MENU 的 FILE > NEW > FILE。(快速鍵 CMD + N) medium.com * 設計 APP 畫面。 編輯 PrinceView.swift。 struct PrinceView: View { var body: some View { Image(.prince) } } *
將 SWIFTUI VIEW 設為第一個畫面。 找到檔名是 專案名 + APP 的 swift 檔,比方專案名 Demo,從 Project navigator 將看到 DemoApp.swift。 如上圖所示,在 WindowGroup { } 裡生成的畫面即為 App 的第一個畫面。預設是 ContentView,我們可將它改成任何的 SwiftUI
view,比方剛剛發明的 PrinceView。 @main struct DemoApp: App { var body: some Scene { WindowGroup { PrinceView() } } } 以 STORYBOARD 的 CONTROLLER 當第一個畫面 * 新增
STORYBOARD 設計第一個畫面。 比方將檔名取名為 Main。 加入當第一個畫面的 controller,記得點選 controller 後勾選 Is Initial View Controller,如此開頭箭頭才會指到它。 * 設定第一個畫面的 STORYBOARD 名字 App 可以有很多 storyboard,因此我們必須告訴它誰是第一個畫面的
storyboard。切換到 Target App 的 Info 分頁,找到 Application Scene Manifest 區塊。 若是 Application Scene Manifest 區塊裡找不到 Storyboard Name,請點選 Item 0 (Default Configuration) 旁的 +,新增 Storyboard Name。 輸入
storyboard 的名字 Main。 * 編輯 FUNCTION SCENE(_:WILLCONNECTTO:OPTIONS:) 若是採用 storyboard 的 controller 當第一個畫面,function scene(_:willConnectTo:options:) 裡將不用寫任何程式,它將參考我們剛剛設定的 storyboard 名字,將
storyboard 裡箭頭指到的 controller 當成第一個畫面。 func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { } 若想另外從程式指定某個 storyboard 的
controller 為第一個畫面,則可透過 storyboard 的 function instantiateInitialViewController 生成 controller ,然後將它指定為 window 的 rootViewController。 比方以下例子裡,我們將 Login.storyboard 裡開頭箭頭指到的畫面設為第一個畫面。 func scene(_
scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { let storyboard = UIStoryboard(name: "Login", bundle: nil)
window?.rootViewController = storyboard.instantiateInitialViewController() } 以 XIB 的 CONTROLLER 或程式設計的 CONTROLLER 當第一個畫面 如下圖所示,控制 XibViewController.xib 的 controller 為 XibViewController。 修改
SceneDelegate.swift 的 function scene(_:willConnectTo:options:),將 window 的 rootViewController 指定為 XibViewController 或某個完全由程式設計畫面的 controller 類別。 func scene(_ scene: UIScene, willConnectTo
session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { guard let windowScene = (scene as? UIWindowScene) else { return } window = UIWindow(frame:
UIScreen.main.bounds) window?.rootViewController = XibViewController() window?.makeKeyAndVisible() window?.windowScene = windowScene } 若是當初建專案時選擇 storyboard,記得要取消
storyboard 的相關設定。 * 將 General 分頁下 Development Info 的 Main Interface 清空。 * 將 Info 頁面 Application Scene Manifest 下的 Storyboard Name 欄位清除。 參考連結