2012-06-25 52 views
0

我有一個UITableView,我希望UITableViewController內置的所有功能除了我希望委託是一個單獨的類。問題是我需要從我的數據源中提取一段識別信息,以便我的委託類能夠正常工作。我應該讓UITableView委託給UITableViewController,然後它將拉取適當的識別信息,然後從didSelectRowAtIndexPath中調用第三個類?我只是想以適當的方式構造這個。適合這種情況的適當的UITableView委派策略是什麼?

我是相當新到iOS和Objective-C,所以我覺得有,每個人都將使用一個解決方案,但不是很明顯我。

回答

1

我會讓委託和數據源都指向您的自定義類。在一個地方管理表視圖事件會更容易,而且您確實不需要UITableViewController。如果將它們分開,那麼代表和數據源之間很可能會有很大的耦合,因爲聽起來您需要在它們之間傳輸大量信息,這違背了將它們分爲不同類的目的。

+0

請注意,某些表視圖功能只有在您明確使用「UITableViewController」(例如靜態單元格)時纔可用。 – Lvsti

+0

@Lvsti我不知道這一點,在什麼情況下您是指靜態單元格? –

+0

如果您使用界面構建器,則可以從iOS 5預填充靜態內容,但前提是您的視圖控制器是「UITableViewController」子類。見例如http://stackoverflow.com/questions/8639780/uitableview-with-static-cells-does-not-appear – Lvsti

0

當我在同一個UIViewController中有兩個表視圖並且可以滿足您的需求時,通常使用的策略是爲每個tableView創建一個Object類,例如:MyFirstTableViewManager和MySecondTableViewManager。

每個表視圖管理器被設置爲委託和數據源到每個的tableview。

如果我需要在我創建這是我從UIViewController中設置每個表視圖管理器類的屬性各tableview中顯示了大量的信息。

這樣我分離管理每個表視圖的邏輯,使其更容易,並保持清潔,從我的UIViewController我可以設置信息顯示在每個表視圖的設置每個表視圖管理器屬性,並使他們重新加載其數據需要時。

希望這可以幫助你。

相關問題