我有很多共同的邏輯,因此我所有的viewController都繼承自BaseViewController,BaseDetailsViewController或BaseWebViewController。最後兩個繼承自從UIViewController繼承的BaseViewController。問題是我不能使用tableViews靜態單元格,因爲我的BaseDetailsViewController不是從UITableViewController繼承。如何用靜態單元支持重新創建UITableViewController?
我從來沒有使用和繼承UITableViewController,因爲可以通過從UIViewController繼承來實現,使用添加的UITableView進行連接並實現了數據源和委託方法。因此,對於表單類型的屏幕(註冊或其他數據輸入屏幕),我用我自己的BaseDetailsViewController這增加了很好的和方便的方法(輸入驗證,定製造型,滾動鍵盤,手柄輸入欄導航等)
使用的UITableViewController有兩個真正的好處:1)鍵盤滾動(如果你使用文本字段)和2)在屏幕上輕鬆創建你的表單UI元素。第一個好處是我無關緊要,因爲我已經在BaseDetailsViewController裏面自己實現了這個東西。關於第二個好處,我在scrollView中創建了我的表單,它提供了很大的靈活性,但是它更加努力(特別是當需要更新屏幕時)。因此我聽說有些人實現了自己的UITableViewController,然後使它從BaseViewController繼承。因此我開始深入研究這種方法。
到目前爲止,我心中已經臨到這兩種方法:
- Recreate your own tableVC。不清楚如何使它適用於靜態單元。目前我的演示程序崩潰,如果我的ReplaceTableViewController沒有實現numberOfRows和cellForRow,並且不顯示靜態單元格,如果我用虛擬內容實現它們。
- method-swizzling。不清楚如何通過爲UITableViewController注入baseViewController繼承來更改類繼承,但仍然不清楚需要添加哪些方法。
有人試過,想分享嗎?
UPDATE我沒有使用故事板作爲我推進清潔MVC - 每個屏幕組件應該有自己的模型,視圖(XIB)和控制器,所有存儲在單獨的文件,以消除合併多個開發者的衝突大型應用程序項目(30多個屏幕)。因此,嵌入segue到tableViewController的容器視圖也不是一個選項。
UPDATE2如果有人想看看,爲什麼,以及如何我這樣做,這裏是我的開源template based new project generator framework我開始最近發佈的鏈接。
那麼,爲什麼你不使用tvc?你的問題很長,不太清楚你要問什麼。 – Schemetrical
所以你真的想要使用自定義的VC,並且在故事板中使用最少的代碼來設計你的表格? – Wain
@Schemetrical。我所有的viewControllers直接或間接從繼承自UIViewController的BaseViewController繼承。這不允許使用靜態單元格的tableView。我不想使用tvc,因爲那樣我將無法在所有viewControllers上使用通用的功能(BaseViewController)(無代碼重複)。問題是如何在不使用tvc和storyboard的情況下使靜態單元工作。 – Centurion