在以编程方式创建的tableView中重新加载数据

时间:2013-08-06 19:02:23

标签: ios uitableview

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

[tableView reloadData];

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

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

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

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

4 个答案:

答案 0 :(得分:2)

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

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

无需标签!

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

if(tableView == self.thisTableView){
    [tableView reloadData];
}

答案 1 :(得分:1)

我不会使用这样的标签(一般来说,我试图完全远离它们)。将创建的tableviews存储在实例变量或数组中。

答案 2 :(得分: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];

答案 3 :(得分: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];