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

时间:2014-02-01 15:00:38

标签: cocoa-touch uitableview uibutton

我正在制作聊天应用程序。 在我的数据源方法中,我将一个单元格出列并传递一个核心数据实体来初始化它。

- (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),然后导航回来时,所有按钮标签都会被取消(显示我在故事板中预设的任何文本)< / p>

有趣的是,当我向下滚动然后向后滚动时,所有按钮标签再次变为正确。 我已经尝试过prepareForReuse但没有工作

注意:这仅适用于按钮标题标签,常规标签(例如datetimeLabel)始终正确显示

- (void)prepareForReuse {
    [super prepareForReuse];

    self.label.text = @"";
    self.datetimeLabel.text = @"";
    self.likeButton.titleLabel.text = @"";
}

1 个答案:

答案 0 :(得分:3)

这听起来很奇怪,我不知道这是否是问题的原因,但你应该使用API​​设置按钮标题

- (void)setTitle:(NSString *)title forState:(UIControlState)state  

[self.likeButton setTitle:@"some title" forState:UIControlStateNormal];