我在刷新桌子方面有问题。我创建了这样的桌子
for (int i = 0; i < 4; i++)
{
DetailsTable = [[UITableView alloc] initWithFrame:CGRectMake(i*768, 45, 768, 1024) style:UITableViewStyleGrouped];
DetailsTable.dataSource = self;
DetailsTable.delegate = self;
DetailsTable.tag = i + 1;
[scrollView addSubview:DetailsTable];
[DetailsTable release];
}每当我像这个reloadData一样刷新表时,它就只刷新最后一个表。而其他表没有刷新
如何在iphone中刷新所有表视图
发布于 2012-02-29 05:40:11
这是因为在DetailsTable中,最后一个表引用是保留的,这样就可以尝试在.h文件中添加这个
NSMutableArray *tblArr;将其添加到.m文件中
tblArr=[[NSMutableArray alloc] init];
for (int i = 0; i < 4; i++)
{
UITableView *DetailsTable = [[UITableView alloc] initWithFrame:CGRectMake(i*768, 45, 768, 1024) style:UITableViewStyleGrouped];
DetailsTable.dataSource = self;
DetailsTable.delegate = self;
DetailsTable.tag = i + 1;
[scrollView addSubview:DetailsTable];
[tblArr addObject:DetailsTable];
[DetailsTable release];
}当您想放松所有的表时,请使用这个
for (int i = 0; i < 4; i++)
{
[(UITableView *)[tblArr objectAtIndex:i] reloadData];
}发布于 2012-02-29 05:34:19
一直覆盖循环中的PersonDetailsTable属性的值。因此,该属性的值是循环退出后的第四个值。针对该属性调用reloadData,该属性指向您添加的表的第4个实例。
要做到这一点,您需要一个表视图的NSMutableArray (而不是一个属性引用),并且重新加载所有这些视图都需要使用reloadData调用。当然,在您的UITableView数据源回调中,您需要区分哪个表视图正在为数据调用您,因为self是所有这些数据的数据源和委托。
发布于 2012-02-29 05:36:49
您正在创建4个tableView,而不是4个单元格,每次创建表的新实例时,当您调用DetailsTable reloadData时,它都会返回DetailsTable的最新实例,即最后一个表。
https://stackoverflow.com/questions/9494040
复制相似问题