我有一个自定义UITableView单元格作为xib。
我已经在里面看了一个滚动视图。
我知道如何设置代表,但我有困惑。他们是两个这样做。
我不知道哪个是最好的,如何确定我必须选择哪种方式。
1种方式:设置委托给文件所有者
2路:将委托设置为UITableViewCell
答案 0 :(得分:0)
在tableviewcell中,scrollview的委托将始终设置为UITableViewCell
这意味着你的第二步将起作用。 如果您发现任何困难,请告诉我。
答案 1 :(得分:0)
选择取决于内部滚动视图的委托函数必须执行的操作。将委托指向自定义单元格并在那里处理内部滚动事件更简单。
但是如果处理内部滚动需要来自视图控制器的大量数据和逻辑,那么将委托指向vc。为了完成这项工作,我们需要知道滚动事件来自内部滚动视图,而不是表格,我们可能需要滚动发生的行,所以:
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
// if the table view's delegate points here (likely), then to distinguish...
if (scrollView != self.tableView) {
// one of the scroll views in the table, but which one?
NSIndexPath = [self indexPathContainingView:scrollView];
// here we know that horizontal scrolling happened on indexPath.row
}
}
// return the indexPath of the tableView cell containing a view
- (NSIndexPath *)indexPathContainingView:(UIView *)view {
while(view && ![view isKindOfClass:[UITableViewCell self]])
view = view.superview;
return [self.tableView indexPathForCell:(UITableViewCell *)view];
}