iOS自定义UITableViewCell设置UIButton标题标签文字
Posted
技术标签:
【中文标题】iOS自定义UITableViewCell设置UIButton标题标签文字【英文标题】:iOS custom UITableViewCell set UIButton title label text 【发布时间】:2014-02-01 15:00:38 【问题描述】:我正在制作一个聊天应用程序。 在我的数据源方法中,我将一个单元格出列并传递一个核心数据实体来对其进行初始化。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
Post *post = self.posts[indexPath.row];
AbstractPostCell *cell;
if ([post.type isEqualToString:@"text"])
cell = [tableView dequeueReusableCellWithIdentifier:CELL_POST_LIST_TEXT forIndexPath:indexPath];
else if ([post.type isEqualToString:@"image"])
cell = [tableView dequeueReusableCellWithIdentifier:CELL_POST_LIST_IMAGE forIndexPath:indexPath];
[cell setupWithPost:post];
return cell;
这里是 setupWithPost 方法:
- (void)setupWithPost:(Post *)post
self.label.text = post.text;
self.datetimeLabel.text = [Format stringWithDatetime:post.datetime];
if ([DBHelper didLikePost:post likerID:[Helper currentUserID]])
self.likeButton.enabled = NO;
self.likeButton.titleLabel.alpha = 0.5;
self.likeButton.titleLabel.text = [NSString stringWithFormat:@"liked"];
else
self.likeButton.enabled = YES;
self.likeButton.titleLabel.alpha = 1.0;
self.likeButton.titleLabel.text = [NSString stringWithFormat:@"like"];
当我第一次进入 ListViewController(TableViewController) 时,按钮标签是正确的,但是当我导航到下一个 ViewController (DetailViewController),然后返回时,所有按钮标签都未设置(显示我在情节提要中预设的任何文本)
有趣的是,当我向下滚动然后向后滚动时,所有按钮标签都再次正确。 我试过 prepareForReuse 但没有工作
注意:这仅适用于按钮标题标签,普通标签(例如 datetimeLabel)始终正确显示
- (void)prepareForReuse
[super prepareForReuse];
self.label.text = @"";
self.datetimeLabel.text = @"";
self.likeButton.titleLabel.text = @"";
【问题讨论】:
【参考方案1】:这听起来很奇怪,我不知道这是不是问题的原因,但您应该使用 API 设置按钮标题
- (void)setTitle:(NSString *)title forState:(UIControlState)state
试试
[self.likeButton setTitle:@"some title" forState:UIControlStateNormal];
【讨论】:
哇,它成功了!我不知道为什么我不能只设置属性。 在 ios8 中也是一样的。设置属性按钮标题只会偶尔改变。以上是关于iOS自定义UITableViewCell设置UIButton标题标签文字的主要内容,如果未能解决你的问题,请参考以下文章
iOS开发UI篇—使用xib自定义UItableviewcell实现一个简单的团购应用界面布局
iOS - UI 测试在 UITableViewCell 中查找图像
iOS开发UI篇—使用xib自定义UItableviewcell实现一个简单的团购应用界面布局
在自定义 uitableviewcell 中设置图像会导致延迟