5

我查看了与此问题相关的许多其他 SO 问题,但没有找到一个处理我的具体情况的问题。我在一种方法中以编程方式创建了可变数量的 tableViews。稍后,我想以另一种方法重新加载任何一个 tableViews 中的数据。我想用...

[tableView reloadData];

重新加载特定 tableView 中的数据。我遇到的问题是访问稍后以编程方式创建的 tableView。我的想法是在创建时为每个 tableView 设置一个唯一的标签。

所以这是我的问题。是否可以通过引用现有 tableView 的标签来创建和初始化 tableView。例如,使用 UIView 可以...

UIView *notATableView = [[UIView alloc] viewWithTag:1];

这将允许我修改标签等于 1 的视图。tableViews 是否存在类似的可能性?

4

4 回答 4

2

只需通过属性名称引用 UITableViews。

[self.thisTableView reloadData];
[self.thatTableView reloadData];

无需标签!

您还可以在 UITableViewDataSource 和 UITableViewDelegate 方法中使用属性名称进行 IF 检查

if(tableView == self.thisTableView){
    [tableView reloadData];
}
于 2013-08-06T19:08:23.333 回答
1

是的,您可以在创建表格视图时在表格视图上设置标签,并稍后使用viewWithTag.

// Assuming you've added the table view as a subview to the current view controller
UITableView *tableView = (UITableView *)[self.view viewWithTag:1];

但是,您不会重新分配它。你只是得到一个指向它的指针。

然后,只需重新加载数据或执行任何操作:

[tableView reloadData];
于 2013-08-06T19:21:28.303 回答
1

我不会使用这样的标签(通常我会尽量远离它们)。将创建的表视图存储在实例变量或数组中。

于 2013-08-06T19:05:32.370 回答
1

1.

tablesArray = [NSMutableArray alloc] init];

全球制造tablesArray。然后添加每个tableView's实例吧。

[tablesArray addObject:tbl1];
[tablesArray addObject:tbl2];

现在您可以轻松获得它们。

UITableView *tbl1 = (UITableView *)[tablesArray objectAtIndex:0];
[tbl1 reloadData];

2.

您可以@property为每个创建tableView并直接比较它们。

3.

当您询问标签时,是的,您也可以使用标签。

[tableView1 setTag:1];
[self.view addSubview:tableView1];
// how to get
UITableView *tableView1 = (UITableView *)[self.view viewWithTag:1];
于 2013-08-06T19:09:20.150 回答