2014-02-01 2 views
0

Я делаю чат-приложение. В моем методе datasource я деактивирую ячейку и передаю Core Data Entity для ее инициализации.iOS custom UITableViewCell set UIButton title label text

- (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 = @""; 
} 

ответ

3

, что звук очень странно, я не знаю, это является причиной проблемы, но вы должны установить название кнопки с помощью API

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

попробовать

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

ничего себе! Я не знаю, почему я не могу просто установить свойство. – OMGPOP

+0

такой же предмет в iOS8. При настройке свойства название кнопки будет меняться только иногда. – creality