2012-02-29 85 views
2

我在刷新表格时遇到了问题。我创建这样表格没有被刷新

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]; 
} 

每当我刷新这样的表的表[DetailsTable reloadData];它只刷新最后一个表。和其他表没有得到刷新

如何刷新所有表视图在iphone

+0

请详细说明您的reloading.you应该如何重新加载所有的在scrollview上的一些例子是for(int i = 0; i <4; i ++){UItableview ** table =(UITableview **)[scrollview viewwithtag:i + 1]; [table reloadData];} – ajay 2012-02-29 05:35:45

回答

1

这是因为在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]; 
} 

,当你想relaod所有的表使用此

for (int i = 0; i < 4; i++) 
{ 
    [(UITableView *)[tblArr objectAtIndex:i] reloadData]; 
} 
+0

比我怎么可以触发特定表的编辑方法 – Harish 2012-02-29 06:31:19

+0

给每个表一个标签,然后在编辑'UITableViewDelegate'方法通过检查tableView标记值执行操作。 – hchouhan02 2012-02-29 06:35:38

+0

当我这样做,它对最后一张表的影响,而不是所有表如何可以解释与示例代码 – Harish 2012-02-29 08:00:07

1

您保持覆盖在循环的PersonDetailsTable属性的值。因此,该属性的值是循环退出后的第4个值。您可以针对指向您添加的表的第4个实例的属性调用reloadData。

为了做到这一点,你需要一个表视图(而不是一个属性引用)的NSMutableArray,并重新加载所有这些可能会循环reloadData调用。当然,在你的UITableView数据源回调函数中,你需要区分哪个表视图正在调用你的数据,因为self是数据源,它们都是委托。

+0

朋友我刷新表上的按钮点击。这只是添加滚动视图 – Harish 2012-02-29 05:37:46

+0

这是很好的表,但你在DetailsTable属性引用上调用reloadData,它指向* only *第四个(最后一个)表,因为你在循环中覆盖它 – bryanmac 2012-02-29 05:39:25

+0

我没有得到你可以更多地解释与示例代码 – Harish 2012-02-29 06:15:12

0

您正在创建4个tableView不是4个单元格,并且每次创建表的新实例时都会调用[DetailsTable reloadData];它引用最近的一个DetailsTable实例,即最后一个表。

0

每次在for循环中,变量DetailsTable都将被一个新变量替换。

您应该创建表的阵列,而不是像这样:

//Declaration 
UITableView *DetailsTable[4]; 

//Implementation 
for (int i = 0; i < 4; i++) 
{ 

DetailsTable[i] = [[UITableView alloc] initWithFrame:CGRectMake(i*768, 45, 768, 1024) style:UITableViewStyleGrouped]; 
    ... 
} 

//And to refresh them 
for(int i = 0; i < 4; i++) 
    [DetailsTable[i] reloadData]; 
-1

您不能添加表这样。你的下一个tableView将替换preViewView。你应该通过初始化四个单表来实现这一点。

0

放在for循环,你要创建

DetailsTable.tag=i 

,然后例如委托方法的编辑方法的使用

- (void)tableView:(UITableView *)tableView didEndEditingRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    switch (tableView.tag) 
    { 
     case 0: 
     { 
      //write your code here 
      break; 
     } 
     // like this do all for other remaining tableview 
     default: 
      break; 
    } 
}