我试图解决有关同一问题的其他问题,但无法找到答案。
错误:
*** 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中正确设置的相关屏幕截图
非常感谢。
答案 0 :(得分:1)
您没有使用表格单元格的子类。该错误显示您尝试使用常规UITableCell实例。确保在IB中用于单元格的笔尖中设置单元格类!
IB中的答案 1 :(得分:0)
选择器无法识别也有同样的问题。 我将self添加到选择器函数中,如下所示。
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(self.handleTapOnDescription))