Objective c 具有自定义tableview单元格的无法识别的选择器
我有一个自定义的tableview单元格。但是,当我想调用cellForRowAtIndexpath中的这个单元格时,它会给出以下错误Objective c 具有自定义tableview单元格的无法识别的选择器,objective-c,ios,ios5,uitableview,Objective C,Ios,Ios5,Uitableview,我有一个自定义的tableview单元格。但是,当我想调用cellForRowAtIndexpath中的这个单元格时,它会给出以下错误 Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UITableViewCell lblPosition]: unrecognized selector sent to instance 0xa62a600' 我检查了100次,如果所有的东西都连
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UITableViewCell lblPosition]: unrecognized selector sent to instance 0xa62a600'
我检查了100次,如果所有的东西都连接正确,命名正确,但仍然没有发现什么是错误的。这就是我在代码中所做的
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *simpleTableIdentifier = @"KlassementCell";
KlassementCell *cell = (KlassementCell *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
if (cell == nil)
{
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"KlassementCell" owner:self options:nil];
cell = [nib objectAtIndex:0];
}
// ask NSFetchedResultsController for the NSMO at the row in question
Klassement *klassement = [self.fetchedResultsController objectAtIndexPath:indexPath];
// Then configure the cell using it ...
NSString *pointDiff = [NSString stringWithFormat:@"%@", klassement.goalsDiff];
NSLog(@"position %@",klassement.position);
NSLog(@"name %@",klassement.name);
cell.lblPosition.text = klassement.position;
cell.lblName.text = klassement.name;
cell.lblgamesPlayed.text = klassement.gamesPlayed;
cell.lblGamesWon.text = klassement.gamesWon;
cell.lblGamesTied.text = klassement.gamesTied;
cell.lblGamesLost.text = klassement.gamesLost;
cell.lblGoalsPos.text = klassement.goalsPos;
cell.lblGoalsNeg.text = klassement.goalsNeg;
cell.lblGoalsDiff.text = pointDiff;
cell.lblPoints.text = klassement.points;
return cell;
}
有人能帮忙吗
亲切问候。试试看
if ((cell == nil) || (![cell isKindOfClass: KlassementCell.class])) {
队列中返回的单元格可能不是KlassementCell。这可能有助于使用viewDidLoad(或任何其他安装位置…)方法: 然后像这样实例化单元格
cell = (KlassementCell*)[myCellNib instantiateWithOwner:nil options:nil];
myCellNib应该在类范围中可用是否已将“KlassementCell”nib中的0索引对象类设置为KlassementCell并映射所有子视图
如果没有,那么这样做可能会起作用。在nib中确保单元格的类别设置为“KlassementCell”,并且标识符设置为“KlassementCell”
您不需要执行任何其他操作,因为在cellForRowAtIndexPath中仅使用1种类型的tableviewcell和1个标识符。标识符必须与类名完全相同,因此两者都必须是“KlassementCell”。这样,队列中就没有常规的可重用UICell。这也是为什么
if((cell==nil)| |(![cell iskindof类:KlassementCell.class])){
之所以有效,是因为您确保没有将内容分配给常规单元格(如lblPosition、lblName和lblgamesPlayed)上不存在的属性。好吧,这是可行的,但您能说一下为什么会有帮助吗?因为我在这个错误上搜索了数小时,我想iOS有一个可重用的UICell(不是KlassementCell)当您调用dequeueReusableCellWithIdentifier时,它将在队列中提供服务。但一定有一个原因我不明白为什么它会在队列中。
cell = (KlassementCell*)[myCellNib instantiateWithOwner:nil options:nil];