在一个类中管理两个表视图

Posted

技术标签:

【中文标题】在一个类中管理两个表视图【英文标题】:Managing two tableviews in a single class 【发布时间】:2011-10-20 05:23:54 【问题描述】:

如何使用 tabledatasource 和 tabledelegates 访问单个类中的两个或多个 tableView?

【问题讨论】:

可以设置table view的tag来区分... 【参考方案1】:

在同一个委托方法中,你必须处理所有的 tableview,

例如:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

if(tableView==tableView1)
  //value for first tableview
else if(tableview==tableView2)
  //value for second tableview

【讨论】:

【参考方案2】:

如果您从 XIB 添加它们,那么 KingofBliss 的回答是正确的,否则如果您以编程方式添加它们,您可以在它们上设置标签属性,然后在委托中使用它来区分您正在处理哪个表。

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

if([tableView tag] == 1)

  //value for first tableview
 else 
  //value for second tableview

【讨论】:

【参考方案3】:

UITableView tableView1 = [[UITableView alloc] init]; 当你创建 tableview 给他们标签..

tableView1.tag         = 10;
tableView1.delegate    = self;
tableView1.dataSource  = self;
[self.view addSubview:tableView1];
[tableView1 release]; 

UITableView tableView2 = [[UITableView alloc] init];
tableView2.tag         = 20;
tableView2.delegate    = self;
tableView2.dataSource  = self;
[self.view addSubview:tableView2];
[tableView2 release]; 

在委托中

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

 if(tableView.tag == tableView1.tag)
   //value for first tableview
 else if(tableview.tag==tableView2.tag)
   //value for second tableview

【讨论】:

谢谢。我们可以同时保持两个表视图处于活动状态吗【参考方案4】:

我不认为有必要添加两个 UITableView 并区分它们,因为将调用相同的委托函数。只需添加一个 UITabaleView 并对您的数据进行检查,设置标志,例如,如果当前您的 UITableView 填充了 Array1 而现在您想用 Array2 填充它,只需设置标志并调用 [UITableView reloadData] .

你的问题解决了。

至于我的建议,在同一个类中添加两个 UITableView 并不是一个好习惯

【讨论】:

以上是关于在一个类中管理两个表视图的主要内容,如果未能解决你的问题,请参考以下文章

MarkerView 在图表上的最后一个点走出图表

swift:重新加载视图以在图表中显示新数据

在 didSelectRowAtIndexPath 时更改视图控制器

从另一个视图控制器中的类中快速绘制形状(以编程方式)

在 UISplitViewController 中删除详细视图中的最后一个对象时应该做啥

如何在 iPhone 中混合来自不同视图的颜色