0

我有一个 UITableView 不是在情节提要中创建的,而是通过代码创建的。可以通过选择其他一些冠军来刷新此表,但是当我这样做时,还有另一个包含旧数据的表...我在刷新时设置为零...

有人有想法吗??

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

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

2 回答 2

0

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

您似乎想刷新表格视图“内部”的数据?如果是这样,您不需要创建新的 UITableView。只需调用reloadData,UITableView 就会查询它的委托和数据源以获取新数据。

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

于 2012-06-22T15:10:00.733 回答
0

如果没有代码,就不可能确切地知道问题出在哪里,但是如果您每次都重新创建表格视图,那么您需要确保[tableView removeFromSuperview]在将其设置为 nil 之前执行此操作。

于 2012-06-22T14:45:39.330 回答