表格没有刷新

时间:2012-02-29 05:31:03

标签: iphone objective-c ios

我在刷新表时遇到问题。我像这样创建表

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中刷新所有表格视图

6 个答案:

答案 0 :(得分:1)

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

为了实现这一目标,您需要一个NSMutableArray表视图(而不是一个属性引用),并且重新加载所有这些都可以使用reloadData调用进行循环。当然,在UITableView数据源回调中,您需要区分哪个表视图正在为数据调用,因为self是数据源,所有这些都是委托。

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

当你想重新加载所有表时使用这个

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

答案 2 :(得分:0)

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

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

答案 4 :(得分:0)

将你要创建的循环放入

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

答案 5 :(得分:-1)

您无法添加此类表格。您的下一个tableView将替换pre tableView。你应该通过初始化四个单表来实现这一点。