ios - UITableView 以编程方式在 UIScrollView 内部不调用委托(delegate)方法

标签 ios objective-c iphone uitableview uiscrollview

我正在尝试使用以下代码在 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/

相关文章:

ios - 如何将 NSMutable 字符串附加到 UILabel

iphone - 子类 UITableViewCell 中的 UIButton 需要调用父类的方法

iphone - 将 iPhone 应用移植到 iPad

iphone - 在 iPhone 中裁剪星形图像

ios - 如果行数超过 8 行,部分自定义 UITableViewCell 会很有趣

ios - 使用 SpriteKit 和 SWIFT 为游戏构建网格关卡

objective-c - Sprite Kit 中的 iAd 暂停场景

iphone - 在iOS中将GMT转换为IST

ios - WKWebView中不存在pageCount属性

objective-c - UIPickerView viewForRow UILabel 忽略框架