通过nib加载单元格并引用其中的组件

时间:2009-02-27 16:57:08

标签: iphone uitableview

我正在加载一个包含两个标记标签的UITableViewCell。用户将离开当前视图,包含以下代码并转到另一个视图。在那里设置名称值,用户返回到该视图(下面的代码)。我将他们在另一个视图中设置的名称分配给名称标签。这有效,但我在其他标签上找到了一个新标签错位。看来我保留了这个单元格的两个版本。不太确定。有关可能导致这种行为的建议吗?

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = nil;
if(indexPath.section == 0)
{   
    cell = [tableView dequeueReusableCellWithIdentifier:@"CellNameIdentifier"];
    if (cell == nil) {
        [[NSBundle mainBundle] loadNibNamed:@"CellentName" owner:self options:nil];
        cell = cellName;
        //self.cellName = nil;
    }
}
return cell;
}
- (void)viewDidAppear:(BOOL)animated {
UILabel *startdate = (UILabel *)[cellName viewWithTag:1];
startdate.text = aName;
[super viewDidAppear:animated];
}

1 个答案:

答案 0 :(得分:1)

从这段代码的外观来看,你不太可能得到“一个新的标签在我的其他标签之上错位”,更像是绘图无法在正确的情况下重新绘制。为了使这个工作,您可以尝试调用[tableView reloadData]或使用观察者,但我认为有更好的方法。

您应该能够将对象传递到其他视图,修改对象(而不是标签)并以此方式移动数据。换句话说,在表视图上,它加载对象,在cellForRowAtIndexPath内部,它加载单元格并使用对象数据设置标签名称。按下第二个视图并将对象作为属性传递。在该屏幕上操作您想要的所有属性,当您弹出视图时,没有特殊的逻辑。第一个表视图再次显示您正在操作的对象中保存的内容。