2

我的视图中有一个长的 UIScrollView(大约 1000 px 高),在这个 UIScrollView 的末尾我有一个 UITableView。

永远不会调用 cellForRowAtIndexPath (当然我检查了委托和数据源是否连接正确,并且表的 IBOutlet 很强大)但是 numberOfRowsInSection 被调用。

我尝试在 UIScrollView 滚动时重新加载 TableView,因此当表格处于焦点时,可能会调用 cellForRowAtIndexPath,但没有运气。

尝试一起使用 tableview 和 scrollview 时,有没有人遇到过类似的行为?

4

3 回答 3

1

你的层次结构是这样的:

有一个父视图。在父视图内部有一个滚动视图和一个表格视图。因此,您的 tableview 距离父视图的原点 1000 处。

因此,tableview 永远不会对您的 parentview 可见,也不会触发任何委托。

于 2013-06-27T09:07:45.280 回答
0

将您的视图包含为 UITableView 的 headerView,如下所示:

在此处输入图像描述

于 2018-06-27T12:04:07.720 回答
0

2020 年更新,Swift 5.X。创建一个自定义 UITableView 允许你tableview在里面scrollview

1)创建UITableView的子类:

导入 UIKit

最终类 ContentSizedTableView: UITableView { 覆盖 var contentSize:CGSize { didSet { invalidateIntrinsicContentSize() } }

override var intrinsicContentSize: CGSize {
    layoutIfNeeded()
    return CGSize(width: UIView.noIntrinsicMetric, height: contentSize.height)
}

2) 将 UITableView 添加到您的布局并在所有方面设置约束。将它的类设置为 ContentSizedTableView。

3) 你应该看到一些错误,因为 Storyboard 没有考虑到我们的子类intrinsicContentSize。在运行时,它将使用 ContentSizedTableView 类中的覆盖

于 2020-04-15T09:03:31.377 回答