Пользовательский вид не обновляется

Поэтому я следую этому руководству, чтобы создать пользовательский UITableCellView с помощью конструктора интерфейса. Я создал xib файл с UITableViewCell который имеет собственный UITableViewCell качестве своего класса. В указанном классе у меня есть -

@interface SearchResultCell : UITableViewCell
@property(strong,nonatomic)IBOutlet UIImageView *restaurantImage;
@property(strong,nonatomic)IBOutlet UILabel *restaurantName;
@end

В файле конструктора интерфейса для пользовательского UITableViewCell в меню соединений я перетащил restaurantImage в UIImageView в пользовательский UITableViewCell и ярлык на имя restaurantName.

Затем в том месте, где мой стол рисуется, я делаю это -

-(UITableViewCell *)tableView:(UITableView *)tableView
 cellForRowAtIndexPath:(NSIndexPath *)indexPath {
 SearchResultCell *cell = [self.resultTable dequeueReusableCellWithIdentifier:CellTableIdentifier];
 NSDictionary *rowData = self.resultsTuples[indexPath.row];
 NSString* restaurantTitle = rowData[@"$element"][@"Title"];
 cell.restaurantName.text = restaurantTitle;
 return cell;
}

- (void)viewDidLoad
{
 [super viewDidLoad];
 UINib *nib = [UINib nibWithNibName:@"SearchResultCell"
 bundle:nil];
 [self.resultTable registerNib:nib forCellReuseIdentifier:CellTableIdentifier];
 // Do any additional setup after loading the view.
}

Выполнение cell.restaurantName.text = restaurantTitle ничего не приводит. Однако выполнение cell.textLabel.text = restaurantTitle работает.

Почему мой ярлык не обновляется?

2 ответа

Ячейки не могут быть правильной высотой для отображения вашей пользовательской метки. Поскольку вы сделали ячейки на 245 пунктов выше в xib, вы должны реализовать tableView: heightForRowAtIndexPath :, и вернуть 245.


  1. Вы это делаете?

    @synthesize restaurantImage;
    @synthesize restaurantName;
  2. После этого в вашем коде:

    restaurantName = [[UILabel alloc]initWithFrame:yourRestaurantNameFrame];
    //other attribute
    [self.contentView addSubview:restaurantName];

licensed under cc by-sa 3.0 with attribution.