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

Posted

技术标签:

【中文标题】通过 nib 加载单元格并引用其中的组件【英文标题】:Loading cells via nib and referencing components in them 【发布时间】:2009-02-27 16:57:07 【问题描述】:

我正在加载一个包含两个标记标签的 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】:

从这段代码的外观来看,您不太可能得到“一个新标签在我的其他标签之上未对齐”,更像是绘图未能正确地重新绘制在事物之上。要完成这项工作,您可以尝试调用 [tableView reloadData] 或使用观察者,但我认为有更好的方法。

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

【讨论】:

我没有关注。 aName 来自我的 appdelegate 类。所以它总是作为一个实例可用。在这种情况下,我不需要将对象数据传递给第二个视图,对吧?我认为需要在 cellForRowAtIndexPath 中进行更改,“显示保存在该对象内的任何内容”才能正常工作? 查看 SQLiteBooks 苹果示例项目,了解将对象作为属性传递和操作的详细代码示例。

以上是关于通过 nib 加载单元格并引用其中的组件的主要内容,如果未能解决你的问题,请参考以下文章

目标 C:如何突出显示 tableView 单元格并在重新加载表格时保持突出显示?

如何使用与 nib 文件中指定的单元格标识符不同的单元格标识符加载 tableview 单元格

来自 NIB 的可扩展自定义 UITableViewCell

react ,ant Design UI中table组件合并单元格并展开详情的问题

从 Nib 加载时,自定义单元格永远不会排队?

使用 Swift 3 将 nib 加载到 collectionView 单元格中