本文的內(nèi)容是對這篇文章的閱讀總結(jié)
原文鏈接:A Case For Using Storyboards on iOS
顯然王巍的這篇文章里的實踐經(jīng)驗比本文原作者的觀點更加值得認(rèn)可:再看關(guān)于 Storyboard 的一些爭論
很多開發(fā)者對于在項目中Storyboard是嚴(yán)格禁止的。SB容易引發(fā)沖突,文件的可讀性差塔次,加載速度可能更慢都是開發(fā)者常常提到的缺點浸间。然而我認(rèn)為這些是在一些使用場景下是可以避免的太雨,SB在項目中依然有適用的地方。
使用SB的好處
直觀魁蒜!
- 可以直接看到界面的視覺效果
- 添加AutoLayout時更加符合直覺
在SB中的操作可以馬上展示到眼前囊扳。使用體驗很好吩翻,也提高了效率。
如何正確的使用
一個SB中只有一個VC锥咸!
這樣就減少了沖突的可能狭瞎,兩個開發(fā)者同時修改一個VC的概率很低,就算沖突了也只是一個VC較容易解決搏予。
這種方式也為更便捷的從SB中初始化VC提供了一種方式熊锭。直接根據(jù)類名載入SB中的 initial view controller 就可以了。不需要給每個VC指定標(biāo)識符雪侥。
有很多特性(static TableView)只能在SB中使用碗殷,在xib中不支持,都使用了SB后速缨,這些特性也可以在SB中自如的使用锌妻。
不要使用segue
segue的跳轉(zhuǎn)非常不靈活,如果都在prepare中處理數(shù)據(jù)也非常死板。所以不要使用segue跳轉(zhuǎn)旬牲。
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
usernameToSend = usernames[indexPath.row]
performSegue(withIdentifier: SegueIdentifier.showUserDetails, sender: nil)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
///
}
控件的屬性在代碼中設(shè)置
比如 font 或者 color 从祝,如果直接在 SB 中只能設(shè)置一個固定的值,建議還是通過代碼使用常量設(shè)置引谜,可以方便的控制全局的控件的樣式。
如果要通過一些關(guān)鍵字查找屬性設(shè)置擎浴,在代碼中也比在SB中更容易被查找到员咽。
技術(shù)是死的,人是活的
不要因為某個技術(shù)有一些缺點就一棍子打死贮预。并不是有缺點就要全盤放棄贝室。不要給自己這種限制,在合適的場景你依然應(yīng)該考慮使用這項技術(shù)仿吞。
原文:
My point is to not disregard a whole technology because you don’t like one aspect of it. You are free to pick and choose which parts you want to use. It’s not all or nothing.
歡迎關(guān)注我的微博:@沒故事的卓同學(xué)