UITableView没有显示在UIScrollView中

时间:2013-06-27 09:00:16

标签: ios uitableview uiscrollview

我在我的View中有一个很长的UIScrollView(大约1000像素高),在这个UIScrollView的末尾我有一个UITableView。

永远不会调用cellForRowAtIndexPath(如果它们连接正确,我肯定检查了委托和数据源,并且表的IBOutlet很强)但是调用了numberOfRowsInSection。

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

在尝试同时使用tableview和scrollview时是否有人遇到过类似的行为?

3 个答案:

答案 0 :(得分:1)

您的层次结构如下:

有一个parentView。在父视图内部有一个滚动视图,并有一个表视图。所以,你的tableview距离父视图的起源是1000。

因此,tableview将永远不会显示在您的父视图中,并且不会触发任何代理。

答案 1 :(得分:0)

将您的视图作为UITableView的headerView包含在内,

enter image description here

答案 2 :(得分:0)

2020年更新,快速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类中的替代