может кто-нибудь объяснить, почему вы должны использовать viewWithTag
для получения subviews (например, UILabel
и т.д.) из ячейки в dequeueReusableCellWithIdentifier
?
Некоторая справочная информация: у меня есть пользовательский UITableViewCell
с парой UILabel
в нем (я воспроизвел простую версию этого ниже). Эти метки определяются в ассоциированном файле NIB и объявляются с помощью IBOutlet
и связаны с классом пользовательского класса ячеек. В tableview dequeueReusableCellWithIdentifier
я делаю это:
CustomCell *customCell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier:@"CustomCellId"];
if (customCell == nil) {
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"customCell" owner:self options:nil];
for (id oneObject in nib)
if ([oneObject isKindOfClass:[CustomCell class]])
customCell = (CustomCell *)oneObject;
}
customCell.firstLabel.text = @"Hello";
customCell.secondLabel.text = @"World!";
return customCell;
Все работает отлично. Однако из учебников, которые я видел, похоже, что при изменении значений меток я должен делать это вместо:
UILabel *firstLabel = (UILabel *)[customCell.contentView viewWithTag:555];
firstLabel.text = @"Hello";
UILabel *secondLabel = (UILabel *)[customCell.contentView viewWithTag:556];
secondLabel.text = @"World!";
(Значения тегов меток установлены в NIB).
Может кто-нибудь сказать мне, какой метод является предпочтительным и почему?
Спасибо!