Objective c 具有自定义tableview单元格的无法识别的选择器

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次,如果所有的东西都连

我有一个自定义的tableview单元格。但是,当我想调用cellForRowAtIndexpath中的这个单元格时,它会给出以下错误

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];