介绍
在我当前的应用程序中,我有一个 UITableView 包含自定义单元格对象。自定义 UIViewCellObjects 只是标准 UITableViewCell 类的子类。自定义单元格包含有关运行后台上传的信息,并使用完成百分比等内容更新它们。
自定义单元格对象从后台运行的上传进程监听 NSNotifications,当他们收到相关通知时,他们只需使用新信息(例如上传百分比)更新自己的视图控件。
现在,当上传过程完成后,我重新排序活动上传对象数组并重新加载 tableview,如下所示:
-(void) uploadFinished: (NSNotification*)notification
{
NSDictionary *userInfo = [notification userInfo];
NSNumber *uploadID = [userInfo valueForKey:@"uploadID"];
if (uploadID.integerValue == uploadActivity.uploadID)
{
[[ApplicationActivities getSharedActivities] markUploadAsFinished:uploadActivity];
[parentTable reloadData];
[self setUploadComplete];
}
}
现在这个方法发生在 tableviewcell 对象中,你可以看到他们在数组排序后立即调用自己的 UITableView 来重新加载数据。markUploadAsFinished方法只是对数组重新排序,因此任何新完成的上传都放在顶部,因此它会以这种方式出现在 UITableView 中。
问题
现在我遇到的问题是,当调用此方法时,有时会出现以下错误: 'NSInvalidArgumentException',原因:'-[CALayer tableView:numberOfRowsInSection:]: unrecognized selector sent to instance
我不是一直都明白,有时整个过程运行良好,完成的上传出现在 UItableview 的开头,而在其他看似随机的时候它会失败。我真的不知道这里发生了什么。
自定义单元格从 .NIB 文件中加载,如下所示:
UploadCell *cell = [activeUploadsTable dequeueReusableCellWithIdentifier:@"UploadProgressCell"];
if (cell == nil)
{
[[NSBundle mainBundle] loadNibNamed:@"UploadCellView" owner:self options:nil];
cell = customCell;
}
有没有人可能知道这里发生了什么?
编辑
首先,我已经追踪到这个错误出现在以下行:reloadData
在自定义单元格对象内部调用。
此外,它发送方法的实例似乎可以更改。我也收到了这个错误:
'NSInvalidArgumentException', reason: '-[UIScrollViewPanGestureRecognizer tableView:numberOfRowsInSection:]: unrecognized selector sent to instance
我真的不知道这里发生了什么。