我正在尝试使用以下代码在 UIScrollView 中加载多个 UITableView
int x = 0;
for (int i = 0; i < 14; i++) {
UITableView *testTableView = [[UITableView alloc] initWithFrame:CGRectMake(x, 0, 150, scrollView.bounds.size.height)];
testTableView.dataSource = self;
testTableView.delegate = self;
[testTableView setTag:i];
[testTableView reloadData];
[scrollView addSubview:testTableView];
x+=155;
}
[scrollView setContentSize:CGSizeMake(x, scrollView.bounds.size.height)];
问题在于,uitableview 没有响应任何委托(delegate)方法。有什么想法吗??
最佳答案
由于 tableView 是(继承自)scrollView,问题可能是您的或任何 scrollView 委托(delegate)方法正在为所有 TableView 以及父 scrollView 调用。
如果是这种情况,您应该在您的委托(delegate)方法中执行检查。例如
- (void)scrollViewDidScroll: (UIScrollView *)scrollView
{
if ([scrollView isEqual:tableView1]){
}else if ([scrollView isEqual:tableView2]){
}else if ([scrollView isEqual:parentScrollView]){
}
}
编辑:
回答你的评论“我应该如何让 UITableView 调用 UITabelView 委托(delegate)方法而不是 ScrollView 委托(delegate)方法”
它并不是真的那样工作。当您设置 testTableView.delegate = self;
时,您还设置了 tableViews scrollView 委托(delegate)。这意味着,例如,当 tableView 滚动时,将调用适当的 scrollView 委托(delegate)方法。
据我所知,完成你所要求的方法是检查你所有的委托(delegate)方法
if ([scrollView isEqual:parentScrollView]){
//do all parentScrollView related things
}
这样,当 TableView 调用委托(delegate)方法时,它什么都不做
参见 here有关继承协议(protocol)的更多信息。
关于ios - UITableView 以编程方式在 UIScrollView 内部不调用委托(delegate)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29393313/