在前面的文章中,我們建立了HelloWorld專案,今天的內容與前面一樣簡單,不過採用xib的方式來實現。
會想寫這一篇文章,是因為之前在看iOS App開發的相關工作,看到有些公司會要求一律使用Xib,不使用storyboard,因此寫了這一篇文章做個紀錄。
現在,我們馬上開始!
這邊的內容都與Day13相同,只是專案名稱我們改為HelloWorldXib以作區別。
建立專案請參考Day13
https://ithelp.ithome.com.tw/articles/10221914
將專案中的Main Interface清空 (原本是Main)
將原本的info.plist中的『Storyboard Name』整個刪除
刪除Main.storyboard檔案
刪除ViewController.swift (可略過)
建立一個新的xib檔案,使用快速鍵『cmd + N』新增檔案
,選擇Cocoa Touch Class
輸入檔案名稱,記得『Also create XIB file』要勾選
選擇檔案路徑,按下Create
到此已經建立XIB檔與ViewController.swift檔
由於程式啟動時,還不知道我們的初始畫面為HelloViewController.xib,因此,我們的程式碼要做些調整
// iOS12 & before work
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
let rootVC = HelloViewController(nibName: String(describing: HelloViewController.self), bundle: nil)
window = UIWindow(frame: UIScreen.main.bounds)
window?.rootViewController = rootVC
window?.makeKeyAndVisible()
return true
}
首先建立一個HelloViewController
建立一個UIWindow
並將根視圖設定為rootVC
此修改僅適用iOS12 & before適用
//guard let _ = (scene as? UIWindowScene) else { return }
// 將上面的上面註解的程式碼,修改為以下程式碼
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
guard let windowScene = (scene as? UIWindowScene) else { return }
let rootVC = HelloViewController(nibName: String(describing: HelloViewController.self), bundle: nil)
let navController = UINavigationController(rootViewController: rootVC)
window = UIWindow(frame: windowScene.coordinateSpace.bounds)
window?.windowScene = windowScene
window?.rootViewController = navController //navController
window?.makeKeyAndVisible()
}
看到與前一天文章,同樣的畫面,以及朗讀Hello, World
到這邊,恭喜各位讀者已完成今日的進度。 (為自己鼓掌)
在今天的文章裡,我們介紹了xib作為啟動後的初始畫面,並且移除了Main.storyboard,一開始練習時有點卡關,後來參考了ref4的影片才順利完成。而今天的練習又有分iOS12 / iOS13的兩種版本,請讀者依照需求自行使用。
今天的內容就到這邊,感謝讀者們的閱讀。
https://github.com/chiron-wang/IT30_11
彼得潘的 Swift iOS App 開發問題解答集
https://medium.com/%E5%BD%BC%E5%BE%97%E6%BD%98%E7%9A%84-swift-ios-app-%E9%96%8B%E7%99%BC%E5%95%8F%E9%A1%8C%E8%A7%A3%E7%AD%94%E9%9B%86
iOS 13 & Swift 5 - The Complete iOS App Development Bootcamp - Angela Yu
https://www.udemy.com/course/ios-13-app-development-bootcamp/
深入淺出 iPhone 開發 (使用 Swift4) - WeiWei
https://www.udemy.com/course/iphone-swift4/
心智圖軟體Xmind
https://www.xmind.net/
Xcode 11 - Create a New Project - No Storyboard - Sean Allen
https://www.youtube.com/watch?v=Htn4h51BQsk
Swift 起步走 集合型別
https://itisjoe.gitbooks.io/swiftgo/content/ch1/collection_types.html