感覺有些時間沒寫iOS的東西了,主要是大神們都已經(jīng)把該講的都講清楚了,<code>實在不敢弄斧班門</code>前段時間看到一篇巧用狀態(tài)值處理復(fù)雜的 TableView文章,思路另辟蹊徑,值得學(xué)習(xí),但通篇看下來后<code>發(fā)現(xiàn)沒有code demo,有些撩人啊</code>,本著學(xué)習(xí)的態(tài)度,根據(jù)該文章的方法,寫了個示例工程loginTableDemo,希望能對看了該文章的人在實踐上有所幫助,同時歡迎大家指出代碼中的不足,<code>沒有優(yōu)化處理,有不少冗余的code</code>.
不廢話,先上效果:

demo
坑與細節(jié)
- 原文中的<code>func transitionToViewState(newState: AuthViewState)</code>僅是方案,不能直接用的.具體的切換要自己實現(xiàn).
- 不同的內(nèi)容,要分成不同的cell,然后用tableView根據(jù)狀態(tài)來加載<code>這里也可以使用一個cell ,然后根據(jù)不同的枚舉值,生成cell里的顯示內(nèi)容</code>,這兩種方式各有利弊,我個人傾向使用不同的cell,簡化枚舉邏輯,但增加了cell種類,<code>大家按喜歡的來就好了</code>
- 與直接使用<code>UIView + UITextField + UIButton</code>的界面對比,使用<code>tableView</code>的方案增加了數(shù)據(jù)傳遞的成本,cell中的<code>按鈕點擊事件</code>和<code>文字輸入事件</code>與<code>controller</code>之間比較松散,我的示例中,使用了protocol的方式,有興趣的可以換成閉包方式看看,<code>也許可以更精簡一些.</code>
- 整個界面UI非常樸素,就一個tableview,感覺邏輯也清晰,<code>并且天然的具有動畫效果</code>,看起來還不錯.
- 項目中使用的SwiftLCS這個庫處理集合很方便,也是項目的主要功臣,值得推薦.
- <code>tableView</code>切換狀態(tài)時,要先刪除后添加,<code>同時要記得修改數(shù)據(jù)源的對應(yīng)數(shù)據(jù)</code>
- 項目使用<code>swift</code>實現(xiàn),代碼也簡單,<code>相信使用Objective-C的同學(xué)</code>也可以看懂
- 最后,項目中<code>Login文件夾(模塊)</code>可以直接拖到其他項目中使用,只需修改一下UI就是你自己的了.<code>喜歡的就贊一個吧</code>
結(jié)束語
就像巧用狀態(tài)值處理復(fù)雜的 TableView文章中最后提到一樣,把UIKit想的深一點,會有更多的可能~<code>共勉,共勉</code>