Может кто-нибудь объяснить, почему вы должны использовать viewWithTag
для получения подпредставлений (например, UILabel
и т. Д.) Из ячейки dequeueReusableCellWithIdentifier
?
Некоторая справочная информация: у меня есть пользовательский UITableViewCell
с парой UILabel
с (я воспроизвел простую версию этого ниже).Эти метки определены в связанном файле NIB и объявлены с IBOutlet
s и связаны с классом контроллера пользовательской ячейки.В табличном представлении 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).
Может кто-нибудь сказать мне, какой метод предпочтительнее и почему?
Спасибо!