如何更改自定义单元格的 UILabel 文本?
Posted
技术标签:
【中文标题】如何更改自定义单元格的 UILabel 文本?【英文标题】:How to change Custom Cell's UILabel Text? 【发布时间】:2015-05-16 05:41:42 【问题描述】:我有一个带有自定义原型单元格的表格视图,该单元格上有 3 个不同的标签。如何访问这些标签?我需要更改他们的文本。我到处搜索,在这种情况下没有找到对我有帮助的东西。我有以下代码:
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"basicCell" forIndexPath:indexPath];
//change cell's 3 labels' text here
return cell;
如何访问上面单元格的 3 个不同标签?
【问题讨论】:
为您的单元格创建一个自定义类,然后以与任何其他视图相同的方式进行操作。您将 IBOutlets 制作为标签(或属性,如果您在代码中制作标签),并使用它们来设置文本。 【参考方案1】:您需要创建一个作为UITableViewCell
子类的类,并将自定义单元格的类设置为您创建的类。然后你想在单元格中使用IBOutlet
s 将标签链接到你创建的子类。
最后,在-tableView:cellForRowAtIndexPath:
中,您应该将单元格转换为您的新子类,这样您就可以访问那些IBOutlet
s。假设您的 outlet 被命名为 someLabelOutlet1
、someLabelOutlet2
和 someLabelOutlet3
,在完成子类化后执行以下操作。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
SomeTableViewCellSubclass *cell = (SomeTableViewCellSubclass *)[tableView dequeueReusableCellWithIdentifier:@"basicCell" forIndexPath:indexPath];
cell.someLabelOutlet1.text = @"sometext"
cell.someLabelOutlet2.text = @"sometext"
cell.someLabelOutlet3.text = @"sometext"
return cell;
【讨论】:
你不要在那里做。您需要创建一个新的UITableViewCell
子类。
现在表格什么也不显示了:(
您是否将标签链接到UITableViewCell
子类?
等等,我们不是也得改变方法的返回类型吗?
不,当然不是。检查您是否真的正确地对其进行了子类化并正确地执行了所有操作。【参考方案2】:
在cellForRowAtIndexPath
,你可以访问这些标签
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
CustomCell *cell =[tableView dequeueReusableCellWithIdentifier:@"CustomCell"];
if (!cell)
[tableView registerNib:[UINib nibWithNibName:@"CustomCell" bundle:nil] forCellReuseIdentifier:@"CustomCell"];
cell = [tableView dequeueReusableCellWithIdentifier:@"CustomCell"];
// set common properties here
cell.lbl1.textColor=[UIColor whiteColor];
cell.lbl1.backgroundColor=[UIColor redColor];
cell.lbl1.font=[UIFont fontWithName:@"Verdana" size:16.0];
cell.lbl1.text=@"lbl1Txt";
cell.lbl2.text=@"lbl2Txt";
cell.lbl3.text=@"lbl3Txt";
return cell;
【讨论】:
以上是关于如何更改自定义单元格的 UILabel 文本?的主要内容,如果未能解决你的问题,请参考以下文章
如何使自定义单元格中的 UILabel 显示保存在 UITableView 中的更改
如何延迟更改 tableView 中的 UILabel 文本
如何在没有自定义单元格的情况下将文本包装在 UITableViewCell 中
当按钮是iOS中自定义单元格的子视图时,如何动态更改按钮文本?