[Swift-d20] - Basic - 捨棄 Storyboard 使用純程式碼 的方式撰寫 ViewController
今天專案的 Github link
其實哦
寫 Swift 也有幾個禮拜了
我一直覺得使用 Interface Builder 的確很方便
但是在程式面與視覺面之間的溝通常常會漏東漏西的
比方說如果要設定 reusable identifier 時
除了程式裡面的字串要設定以外,還要再到 storyboard 裡設定同樣的字串
一個簡單的小程式可能不超過 20 個 View 的情況下
還可以這樣做,當程式長得非常大的時候,好像就很難注意到這件事,
而且 View 太多 storyboard 就會開始變慢….
因此今天要來試著在 Swift 中
如何不用 Storyboard,來打造我們的程式
(當然 xib/nib 還是會用到,只是我們單純捨棄 storyboard,用程式來控制流程)
首先,一樣先建立一個測試專案
接著我們要動到的程式碼是 AppDelegate.swift:
編輯它:
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
var viewController: ViewController?
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// Override point for customization after application launch.
self.viewController = ViewController()
self.viewController?.view.backgroundColor = UIColor.redColor()
self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
self.window?.backgroundColor = UIColor.whiteColor()
self.window?.rootViewController = viewController
self.window?.makeKeyAndVisible()
return true
}
其實這段程式碼,就是在做 storyboard 的 “進入點” 這件事
var viewController: ViewController?
我們用專案建立時產生的 ViewController 建立了一個物件
並在 application launch 的時候,將該 ViewController 建立起來,設定他的背景顏色為紅色
self.viewController = ViewController()
self.viewController?.view.backgroundColor = UIColor.redColor()
另外對 window 做一些設定
self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
self.window?.backgroundColor = UIColor.whiteColor()
設定他 Screen 大小 (根據手機解析度而定) 並設定 window 的背景顏色為白色
接著是最重要的設定:
self.window?.rootViewController = viewController
self.window?.makeKeyAndVisible()
我們要讓 viewController 指定為是這個 window 的 rootViewController
並且 makeKeyAndVisible
這樣就完成手動設定進入點的程式了
再來我們就可以大膽一點,把 Storyboard 砍掉啦!
接著執行程式,就可以看到一片紅色了!!!
是不是很簡單!
如果要 NavigationController 也可以直接設定!
接下來的實戰開發專案就會以不使用 Storyboard 的方式開發
增加程式碼可讀性 :P
老是貼圖也很累 XDDDD
接下來就要用 Swift 寫一個 TODOList APP 囉!
並且實際接上隔壁棚的 Restful API XD