发送到实例的无法识别的选择器

时间:2013-10-12 20:25:52

标签: ios uitableview

我试图解决有关同一问题的其他问题,但无法找到答案。

错误:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UITableViewCell setLecture:]: unrecognized selector sent to instance 0xa85d800'

以下是代码中的相关摘录:

// UITableViewCell .h
@interface ITCourseDetailTableViewCell : UITableViewCell

@property (strong, nonatomic) ITClass * lecture;

@property (strong, nonatomic) IBOutlet UILabel *lectureCode;

- (void)setLecture:(ITClass *)lecture;

@end

// UITableViewCell .m
- (void)setLecture:(ITClass *)lecture
{
    self.lecture = lecture;

    self.lectureCode.text = self.lecture.classCode;
}

这是被调用的方法。此外,这是问题发生的地方:

// view controller .m
- (UITableViewCell *)tableView:(UITableView *)tableView
         cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSString * cellIdentifier = @"ITCourseDetailTableViewCell";

    ITCourseDetailTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];

    if (!cell) {
        NSArray * nib = [[NSBundle mainBundle] loadNibNamed:cellIdentifier owner:self options:nil];
        cell = [nib objectAtIndex:0];
    }

    ITClass * currentClass = [[[self course] courseLectures] objectAtIndex:indexPath.row];
    cell.lecture = currentClass;

    return cell;
}

此调用发生了问题:cell.lecture = currentClass;

该方法肯定存在于单元类中。在堆栈跟踪中,我可以确认正在实例化正确的单元格,并且它具有_lecture实例变量。

确认该类在IB中正确设置的相关屏幕截图

enter image description here

enter image description here

非常感谢。

2 个答案:

答案 0 :(得分:1)

您没有使用表格单元格的子类。该错误显示您尝试使用常规UITableCell实例。确保在IB中用于单元格的笔尖中设置单元格类!

IB中的

  • 选择您的单元格视图,
  • 打开检查器并转到标签3.
  • 填写'自定义班级'以指向您的班级

答案 1 :(得分:0)

选择器无法识别也有同样的问题。 我将self添加到选择器函数中,如下所示。

let tapGesture = UITapGestureRecognizer(target: self, action: #selector(self.handleTapOnDescription))