UITableView的子视图?

时间:2013-08-17 17:52:44

标签: iphone ios cocoa-touch uitableview

我有一个带有五个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?

1 个答案:

答案 0 :(得分:0)

self.newsViewTable.subviews返回一组子视图。错误显示出来,因为当它到达子视图数组中的UIImageView时,您在其上调用hideSocialMediaBar方法,并且它不响应该方法。

如果您要对单元格执行hideSocialMediaBar,则需要在单元格上调用它。

在滚动视图方法中,调用[self.tableview visiblecells]将返回接收器中可见的NSArray单元格。

所以改变:

[[self.newsViewTable.subviews objectAtIndex:i] hideSocialMediaBar];

[[self.newsViewTable.visiblecells objectAtIndex:i] hideSocialMediaBar];