2013-04-25 64 views
2

我一直面臨着我無法回答的難題。在一個視圖中配置多個UITableViews?

我正在創建一個在單個視圖中有多個UITableView的應用程序。每個TableView將需要具有不同於另一個的屬性。

UITableViewDelegate方法提供通用方法來配置UITableView s,但從我所看到的情況來看,這將影響View中的一個。

如果我需要控制每個單獨的參數TableView - 這將如何實現?

+0

不要將您的viewcontroller設置爲委託和數據源,而應爲每個tableview創建一個nsobject子類並進行設置。管理和維護會更容易。 – Desdenova 2013-04-25 08:21:12

+0

重複:http://stackoverflow.com/q/1416372/1075405 – Groot 2013-04-25 08:22:53

回答

3

這是不正確的 - 你可以用UITableViewDelegate配置所有的東西。例如:

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 

您可以通過tableView變量區分桌面瀏覽。爲此,您需要存儲對不同表格的引用(例如,通過屬性)。現在

@property (nonatomic, strong) UITableView *myFirstTableView; 

你可以做這樣的事情:

if (tableView == self.myFirstTableView) {} else {} 
0

每個的委託方法,它給你需要的信息,其實現代碼如下。您可以使用它來標識哪個tableview實例請求數據。

使用標記區分表視圖。

tableview1.tag = 100; 
    tableview2.tag = 200; 
    // ... so on - if using interface builder you can set tag in there too :) 

現在在委託。

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
if (tableview.tag == 100) 
{ 
// handle for tableview 1 
} 
else if (tableview.tag == 200) 
{ 
// handle for tableview 2 
} 

} 
0

所有的tableView委託方法都以tableView作爲參數開始。

例:- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

此傳遞的UITableView作爲參數。因此,您可以添加switch-case或if語句來檢查要修改數據的tableView。

0

而不是使用UIViewController作爲您的tableView委託,您可以創建一個新的類充當tableView委託。然後該類可以包含正在處理的特定表所需的參數。

在視圖控制器中,您可以爲每個tableView分配一個此類的實例,並將其指定爲委託。

+0

謝謝大家的反饋和想法。已經整理好了。 – Fritzables 2013-04-25 23:22:40

相關問題