[小卓筆記]:使用Storyboard的正確姿勢

本文的內(nèi)容是對(duì)這篇文章的閱讀總結(jié)
原文鏈接:A Case For Using Storyboards on iOS

顯然王巍的這篇文章里的實(shí)踐經(jīng)驗(yàn)比本文原作者的觀點(diǎn)更加值得認(rèn)可:再看關(guān)于 Storyboard 的一些爭論

很多開發(fā)者對(duì)于在項(xiàng)目中Storyboard是嚴(yán)格禁止的。SB容易引發(fā)沖突,文件的可讀性差,加載速度可能更慢都是開發(fā)者常常提到的缺點(diǎn)。然而我認(rèn)為這些是在一些使用場景下是可以避免的,SB在項(xiàng)目中依然有適用的地方。

使用SB的好處

直觀!

  • 可以直接看到界面的視覺效果
  • 添加AutoLayout時(shí)更加符合直覺

在SB中的操作可以馬上展示到眼前。使用體驗(yàn)很好,也提高了效率。

如何正確的使用

一個(gè)SB中只有一個(gè)VC!

這樣就減少了沖突的可能,兩個(gè)開發(fā)者同時(shí)修改一個(gè)VC的概率很低,就算沖突了也只是一個(gè)VC較容易解決。

這種方式也為更便捷的從SB中初始化VC提供了一種方式。直接根據(jù)類名載入SB中的 initial view controller 就可以了。不需要給每個(gè)VC指定標(biāo)識(shí)符。

有很多特性(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è)置一個(gè)固定的值,建議還是通過代碼使用常量設(shè)置,可以方便的控制全局的控件的樣式。
如果要通過一些關(guān)鍵字查找屬性設(shè)置,在代碼中也比在SB中更容易被查找到。

技術(shù)是死的,人是活的

不要因?yàn)槟硞€(gè)技術(shù)有一些缺點(diǎn)就一棍子打死。并不是有缺點(diǎn)就要全盤放棄。不要給自己這種限制,在合適的場景你依然應(yīng)該考慮使用這項(xià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é)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容