我有一个带有五个costu UITableViewCells的UITableView。 如果TableView滚动所有单元格应该执行相同的方法。
以下是代码:
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
if(self.newsViewTable == scrollView) {
for(int i = 1; i < [self.newsViewTable.subviews count]; i++) {
[[self.newsViewTable.subviews objectAtIndex:i] hideSocialMediaBar];
}
}
}
但是,如果我scoll那就出现错误!
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIImageView hideSocialMediaBar]: unrecognized selector sent to instance 0x8a9ea90'
我现在不知道为什么错误会处理UIImageView? UITableView只有一个直接子视图,这就是Cell! 怎么了?为什么它是UIImageView?
答案 0 :(得分:0)
self.newsViewTable.subviews
返回一组子视图。错误显示出来,因为当它到达子视图数组中的UIImageView时,您在其上调用hideSocialMediaBar
方法,并且它不响应该方法。
如果您要对单元格执行hideSocialMediaBar
,则需要在单元格上调用它。
在滚动视图方法中,调用[self.tableview visiblecells]
将返回接收器中可见的NSArray单元格。
所以改变:
[[self.newsViewTable.subviews objectAtIndex:i] hideSocialMediaBar];
到
[[self.newsViewTable.visiblecells objectAtIndex:i] hideSocialMediaBar];