我一直面臨着我無法回答的難題。在一個視圖中配置多個UITableViews?
我正在創建一個在單個視圖中有多個UITableView
的應用程序。每個TableView
將需要具有不同於另一個的屬性。
UITableViewDelegate
方法提供通用方法來配置UITableView
s,但從我所看到的情況來看,這將影響View中的一個。
如果我需要控制每個單獨的參數TableView
- 這將如何實現?
我一直面臨着我無法回答的難題。在一個視圖中配置多個UITableViews?
我正在創建一個在單個視圖中有多個UITableView
的應用程序。每個TableView
將需要具有不同於另一個的屬性。
UITableViewDelegate
方法提供通用方法來配置UITableView
s,但從我所看到的情況來看,這將影響View中的一個。
如果我需要控制每個單獨的參數TableView
- 這將如何實現?
這是不正確的 - 你可以用UITableViewDelegate
配置所有的東西。例如:
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
您可以通過tableView
變量區分桌面瀏覽。爲此,您需要存儲對不同表格的引用(例如,通過屬性)。現在
@property (nonatomic, strong) UITableView *myFirstTableView;
你可以做這樣的事情:
if (tableView == self.myFirstTableView) {} else {}
每個的委託方法,它給你需要的信息,其實現代碼如下。您可以使用它來標識哪個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
}
}
所有的tableView委託方法都以tableView
作爲參數開始。
例:- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
此傳遞的UITableView作爲參數。因此,您可以添加switch-case或if語句來檢查要修改數據的tableView。
而不是使用UIViewController作爲您的tableView委託,您可以創建一個新的類充當tableView委託。然後該類可以包含正在處理的特定表所需的參數。
在視圖控制器中,您可以爲每個tableView分配一個此類的實例,並將其指定爲委託。
謝謝大家的反饋和想法。已經整理好了。 – Fritzables 2013-04-25 23:22:40
不要將您的viewcontroller設置爲委託和數據源,而應爲每個tableview創建一個nsobject子類並進行設置。管理和維護會更容易。 – Desdenova 2013-04-25 08:21:12
重複:http://stackoverflow.com/q/1416372/1075405 – Groot 2013-04-25 08:22:53