Я создал пользовательский класс UITableViewCell и использовал метод layoutSubviews для добавления пользовательской метки. Как это:
- (void)layoutSubviews
{
[super layoutSubviews];
if (statusLabel == nil)
{
statusLabel = [[UILabel alloc]initWithFrame:CGRectMake(430.0, 10.0, 100.0, 20.0)];
[statusLabel setTextAlignment:UITextAlignmentRight];
[statusLabel setText:@"Status, set in code"];
statusLabel.tag = 1;
[self.contentView addSubview:statusLabel];
}
}
Как видите, я установил начальный текст метки на «Статус, задан в коде».
В контроллере табличного представления я установил текст для этой пользовательской метки в методе cellForRowAtIndexPath, например:
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
int index = [indexPath row];
NSString *introducerString =[introducers objectAtIndex:index];
NSArray *parts = [introducerString componentsSeparatedByString:@","];
static NSString *MyIdentifier = @"Requester";
UITableViewCell *cell = [tableView
dequeueReusableCellWithIdentifier:MyIdentifier];
if (cell == nil)
{
cell = [[[DanceCardCell alloc] initWithStyle:UITableViewCellStyleSubtitle
reuseIdentifier:MyIdentifier] autorelease];
}
UIImage *image = [UIImage imageNamed:@"1.jpg"];
[cell.imageView setImage:image];
cell.textLabel.text = [parts objectAtIndex:1];
cell.detailTextLabel.text = @"Some text";
UILabel *statusLabel = (UILabel *)[cell viewWithTag:1];
statusLabel.text = @"Did it!";
return cell;
}
Я использую одно табличное представление для отображения двух списков, в зависимости от того, какая из двух кнопок нажата. При нажатии кнопки соответствующий контроллер табличного представления присоединяется к табличному представлению, и вызывается метод reloadData для запуска отображения новых данных. Новые данные отображаются, но текст пользовательской метки должен гласить «Сделал это!» читает «Состояние, задано в коде ...», пока я дважды не переключу списки.
Как я могу получить новый текст для пользовательской метки для немедленного обновления? Я проверил официальную документацию и не могу найти ссылки на обновление отображения ячейки после обновления ее пользовательского содержимого.
Вот снимок экрана, чтобы продемонстрировать, что происходит: http://www.dsbsystems.co.uk/images/xcode1.png