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

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