Предполагая, что вы находитесь в методе как tableView:didSelectRowAtIndexPath:
(или есть другой способ, чтобы получить путь индекса к клетке), вы можете сделать что-то вроде этого:
UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];
UILabel *label = nil;
for(UIView *subview in cell.contentView.subviews) {
if([subview isKindOf:[UILabel class]]) {
label = (UILabel*)subview;
break;
}
}
if(label)
label.text = @"New text";
Найдет первый UILabel в и может не работать, если в вашей ячейке имеется более одной метки. Более надежный способ сделать это - установить тег метки при создании ячейки (это можно сделать в Interface Builder или в коде). Тогда вы можете найти ярлык, как это:
UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];
UILabel *label = nil;
for(UIView *subview in cell.contentView.subviews) {
if([subview isKindOf:[UILabel class]] && [subview tag] == kDetailLabelTag) {
label = (UILabel*)subview;
break;
}
}
if(label)
label.text = @"New text";
Thanks Costa !! – NSExplorer