由于項目中大量運用到展示性的tableview 本人又比較懶 一直都很想寫一個根據cell生成tableview的demo 但是究竟于具體的方法獲取和其他原因一直沒法實現 ?終于在昨天想到了一種比較好的解決方式 ?
在類中我們定義這幾個屬性用來保存外部傳入的類名和數據
首先生成一個tableview需要包含自定義的cell以及數據 ?這兩個對象由外部傳入 我寫在實例方法里 當然也可以寫在set方法里 ?
實例化并賦值
注意 這里的cellClassName是已經寫好的cell的類名 由后面為runtime獲取cell的類使用
然后在cellForRowAtIndexPath方法中通過NSClassFromString(self.cellClassName)來獲取cell對應的類對象然后進行實例化 再通過performSelector來加載cell的賦值方法
加載cell
這樣就可以實現外部通過string來傳入cell的類 同時進行加載 ?不過這里的加載方法是固定的 還沒想到如何把updateCellWith:獲取出來 ?有想法的同學歡迎聯系我 。。。。 ?
ps runtime可以遍歷類的方法 ?但是這里需要做判斷 貌似效率會太低 ?不知道有沒有其他好的解決辦法
通過上面的兩個關鍵方法就可以實現一條語句生成一個tableview
效果圖:
git地址? https://github.com/whereAreTheGuGuda/TestTableView
順便吐槽一下原來有大神做過。。。 我去繼續研究
ps:最近感覺可以通過統一標識符來識別加載方法 就又稍微更新了一下?
這段方法可以讓我們直接獲得類的所有方法 然后以@【NSString】的形式打包 然后我們用是否字符串前包含標識符來判斷是否為加載方法,然后執行加載方法