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 中设置图像会导致延迟

iOS自定义UITableViewCell设置UIButton标题标签文字

iOS Swift - UITableViewCell 自定义子类不显示内容