我在我的View中有一个很长的UIScrollView(大约1000像素高),在这个UIScrollView的末尾我有一个UITableView。
永远不会调用cellForRowAtIndexPath(如果它们连接正确,我肯定检查了委托和数据源,并且表的IBOutlet很强)但是调用了numberOfRowsInSection。
我尝试在UIScrollView滚动时重新加载TableView,所以当表格处于焦点时,可能会调用cellForRowAtIndexPath,但没有运气。
在尝试同时使用tableview和scrollview时是否有人遇到过类似的行为?
答案 0 :(得分:1)
您的层次结构如下:
有一个parentView。在父视图内部有一个滚动视图,并有一个表视图。所以,你的tableview距离父视图的起源是1000。
因此,tableview将永远不会显示在您的父视图中,并且不会触发任何代理。
答案 1 :(得分:0)
答案 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类中的替代