У меня это работает, но мне интересно, почему метод, который я думал, должен работать, не работает. У меня есть .xib с uitableviewcell и WirelessCell.h/.m как класс. Я хотел добавить в ячейки объект ADVPercentProgressBar. Мой cellForRowAtIndexPath выглядит следующим образом:Добавление объектов в пользовательскую ячейку повторного использования
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
int section = indexPath.section;
int row = indexPath.row;
if (section == 6) {
// Make dynamic rows cell
static NSString *CellIdentifier = @"wireless3";
WirelessCell *cell = (WirelessCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (!cell) {
NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"WirelessCell" owner:nil options:nil];
cell = [topLevelObjects objectAtIndex:0];
cell.progressBar = [[ADVPercentProgressBar alloc] initWithFrame:CGRectMake(10, 22, 300, 28) andProgressBarColor:ADVProgressBarBlue];
[cell addSubview:cell.progressBar];
}
// Set labels here
NSDictionary *tmpDict = [[[DataSingleton sharedSingleton] sharedWirelessClients] objectAtIndex:row];
cell.labelUptime.text = [tmpDict objectForKey:@"uptime"];
[cell.progressBar setProgress:[[tmpDict objectForKey:@"signal"] intValue]*0.001];
return cell;
} else {
return [super tableView:tableView cellForRowAtIndexPath:indexPath];
}
}
Это прекрасно работает добавление ADVPercentProgressBar во время инициализации ячейки, но я думал, что я мог бы поставить ADVPercentProgressBar в клетках initWithStyle так:
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
// Initialization code
progressBar = [[ADVPercentProgressBar alloc] initWithFrame:CGRectMake(10, 22, 300, 28) andProgressBarColor:ADVProgressBarBlue];
[self.contentView addSubview:progressBar];
}
, а не в инициализация ячейки ViewController. но это не сработает. Мне просто интересно, почему, поскольку мне кажется логичным добавлять объекты в инициализацию класса ячейки. return self; }
Ваше право, оно работает с использованием awakeFromNib. Но в приведенном выше коде (и то, что я сейчас использую с awakeFromNib) делает ли ячейка ячейкой, которая не является помехой? Имеет ли это значение? – Darren
Если идентификатор совпадает с ним, он может быть удален. Не имеет значения, откуда взялась ячейка. –