重新启动UITableView问题

时间:2012-06-22 14:41:55

标签: objective-c uitableview ios5 storyboard

我的故事板中没有创建UITableView,而是通过代码创建。这个表可以通过选择其他一些冠军来刷新,但是当我这样做的时候,还有另一个带有旧数据的表...我设置为nil非常时间刷新......

有人有想法吗?

要填写表格,我使用此代码

listVideo = [listGroupes objectAtIndex:indexPath.row];
montageListView= [[UITableView alloc] initWithFrame:listFrame style:UITableViewStylePlain];
montageListView.delegate = self;
montageListView.dataSource = self;
montageListView.layer.cornerRadius = 10;
[listMontagesView addSubview:montageListView];

所以有一个新的视图与另一个选项,但如果我回到这个代码:

montagesListView removeFromSuperview];
montagesListView = nil;

我用相同的代码重新填充

listVideo = [listGroupes objectAtIndex:indexPath.row];
montageListView= [[UITableView alloc] initWithFrame:listFrame style:UITableViewStylePlain];
montageListView.delegate = self;
montageListView.dataSource = self;
montageListView.layer.cornerRadius = 10;
[listMontagesView addSubview:montageListView];

并且有一个很好的表格但旧的数据还有另一个... 我真的没有发现代码问题:/

这是行的单元格代码,但我不认为这是问题,

    static NSString *MyIdentifier = @"MyIdentifier";
NSString *text;
// Try to retrieve from the table view a now-unused cell with the given identifier.
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];

// If no cell is available, create a new one using the given identifier.
if (cell == nil) {
    // Use the default cell style.
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:MyIdentifier];
}

if (tableView == groupListView) {
    text = [listGroupesNames objectAtIndex:indexPath.row];
}else {

    text = [[listVideo objectAtIndex:indexPath.row]description];
    if ([[listVideo objectAtIndex:indexPath.row]note] == 1) {
        cell.imageView.image = [UIImage imageNamed:@"good.png"];
    }
    if ([[listVideo objectAtIndex:indexPath.row]note] == 2) {
        cell.imageView.image = [UIImage imageNamed:@"neutre.png"];
    }
    if ([[listVideo objectAtIndex:indexPath.row]note] == 3) {
        cell.imageView.image = [UIImage imageNamed:@"bad.png"];
    }
}

if ([[UIDevice currentDevice]userInterfaceIdiom] == UIUserInterfaceIdiomPad) {
    cell.textLabel.font=[UIFont systemFontOfSize:18.0];
    text = [NSString stringWithFormat:@"           %@",text];
}else{
    cell.textLabel.font=[UIFont systemFontOfSize:12.0];
}
if (tableView == groupListView) {
    cell.imageView.image = [UIImage imageNamed:@"group.png"];
    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
}
if(tableView == montageListView){
    cell.imageView.image = [UIImage imageNamed:@"videos.png"];
}
cell.textLabel.text = text;
return cell;

2 个答案:

答案 0 :(得分:0)

如果没有代码,就无法确切地知道问题是什么,但如果每次重新创建表格视图,则需要确保在将其设置为nil之前执行[tableView removeFromSuperview]

答案 1 :(得分:0)

你的问题有点难以理解,但这是我的看法。

您似乎想刷新表格视图中的数据?如果是这样,您不需要创建新的UITableView。只需调用reloadData,UITableView将查询它的新数据的委托和数据源。

如果添加新的UITableView实例但在数据源和委托方法中返回相同的数据,它将只显示旧数据。确保更新方法。