Я создал пользовательский UITableViewCell
, но когда я из очереди клетки, иногда он бросает NSInvalidArgumentException
:Почему пользовательский UITableViewCell * иногда * вызывает исключение NSInvalidArgumentException?
[UITableViewCell nameLabel]: unrecognized selector sent to instance 0x3b4e7f0
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[UITableViewCell nameLabel]: unrecognized selector sent to instance 0x3b4e7f0'
Теперь мой обычай UITableViewCell
имеет атрибут nameLabel
, поэтому я запутался, почему он бросает эта ошибка. Ниже приведен код, я использую, чтобы из очереди клетки:
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath {
NSUInteger row = [indexPath row];
CTMenuItemVO* key = [[[self retrieveCartItems] allKeys] objectAtIndex:row];
NSNumber* quantity = [[self retrieveCartItems] objectForKey:key];
static NSString* SectionsTableIdentifier = @"SectionsTableIdentifier2";
OrderItemCell* cell = (OrderItemCell*)[tableView dequeueReusableCellWithIdentifier:
SectionsTableIdentifier];
if (cell == nil) {
NSArray* topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"OrderItemCell"
owner:nil
options:nil];
for(id currentObject in topLevelObjects)
{
if ([currentObject isKindOfClass:[UITableViewCell class]])
{
cell = (OrderItemCell*) currentObject;
break;
}
}
}
cell.nameLabel.text = key.Name;
cell.qtyLabel.text = [quantity stringValue];
return cell;
}
UPDATE
Изменение isKindOfClass:[UITableViewCell class]
чек на OrderItemCell
производит другая ошибка:
Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'UITableView dataSource must return a cell from tableView:cellForRowAtIndexPath:
Я думаю, это происходит потому, что он оставляет цикл for
без присвоения класса.
Извините, нет. Вместо того, чтобы бросать ранее указанное исключение, я получаю другое: завершение приложения из-за неотображенного исключения «NSInternalInconsistencyException», причина: «UITableView dataSource должен возвращать ячейку из tableView: cellForRowAtIndexPath: при условии, что она покидает цикл« for », не найдя никаких ячеек этого конкретного вида. –