Создание поддельного владельца будет работать;однако такое решение может быть хрупким и нерастяжимым.В некотором смысле, клетка владеет собой, но даже это технически неверно.Правда в том, что у UITableViewCell
нет владельцев.
Правильный способ реализации пользовательских ячеек табличного представления - сначала создать пользовательский подкласс UITableViewCell.В этом классе вы определите все IBOutlets и тому подобное для ячейки.Вот пример файла заголовка:
@interface RBPersonCell : UITableViewCell
@property (nonatomic, strong) IBOutlet UILabel * nameLabel;
@property (nonatomic, strong) IBOutlet UILabel * ageLabel;
- (void)setupWithPerson:(Person *)person;
@end
Оттуда у меня есть удобный метод, который при необходимости создает ячейку из пера:
+ (id)cellForTableView:(UITableView *)tableView reuseIdentifier:(NSString *)reuseID fromNib:(UINib *)nib {
if (!reuseID)
reuseID = [self cellIdentifier];
id cell = [tableView dequeueReusableCellWithIdentifier:reuseID];
if (!cell) {
NSArray * nibObjects = [nib instantiateWithOwner:nil options:nil];
// Sanity check.
NSAssert2(([nibObjects count] > 0) &&
[[nibObjects objectAtIndex:0] isKindOfClass:[self class]],
@"Nib '%@' does not appear to contain a valid %@",
[self nibName], NSStringFromClass([self class]));
cell = [nibObjects objectAtIndex:0];
}
return cell;
}
Этот метод инкапсулирует всекода создания, поэтому мне никогда не придется его видеть или переписывать.Предполагается, что пользовательская ячейка является первым корневым представлением в кончике.Это довольно безопасное предположение, поскольку в качестве корневого представления вы должны иметь только пользовательскую ячейку.
Со всем этим кодом вы готовы работать в Интерфейсном Разработчике.Сначала вам нужно установить пользовательский класс в проверке личности.Далее, не забудьте установить идентификатор вашей ячейки.Для удобства лучше использовать имя пользовательского класса.Когда вы перетаскиваете свои соединения, а не перетаскиваете их в Владелец файла, перетаскивайте свои соединения в саму пользовательскую ячейку.
Большая часть того, что я узнал о пользовательских ячейках табличного представления, получена из рецептов iOS рецептов 15-16.Вот бесплатная выписка непосредственно с Прагматическая книжная полка .Вы можете проверить эту книгу для более подробной информации.
РЕДАКТИРОВАТЬ:
Я наконец-то нашел время, чтобы открыть свой класс RBSmartTableViewCell
.Вы можете найти его на моем GitHub .Вы должны найти этот класс более полезным, чем код непосредственно из рецептов iOS, поскольку мой класс обрабатывает все ячейки одинаково, независимо от того, созданы ли они с использованием XIB, UIStoryboard или кода.Этот репо также включает рабочие образцы.