ios - UIScrollView 中的 UIView 中的 UITableView。滚动表格视图和滚动滚动视图时
问题描述
我想在 tableView 滚动和 scrollView 滚动时进行。
我知道有一个解决方案是使用委托,当 tableView 滚动并使 scrollView contentOfSet 更改但这是我不想要的。
UIScrollView 中的 UIView 中的 UITableView。滚动表格视图时也不要滚动滚动视图
就像这篇文章一样,我认为是没有任何设置只初始化视图,任何人都可以告诉我实现这个吗?
这是我初始化视图的方式:
import UIKit
class ViewController: UIViewController {
let backView = UIScrollView()
let tableView = UITableView()
let testView = UIView()
override func viewDidLoad() {
super.viewDidLoad()
view.addSubview(backView)
backView.frame = CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height)
backView.contentSize = CGSize(width: UIScreen.main.bounds.width, height: 1000)
backView.addSubview(testView)
testView.frame = CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: 500)
testView.addSubview(tableView)
tableView.frame = CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: 500)
tableView.dataSource = self
}
}
extension ViewController: UITableViewDataSource {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 50
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = UITableViewCell()
cell.textLabel?.text = "\(indexPath.row)"
return cell
}
}
解决方案
如果您想要层次结构中的多个滚动视图(tableview/scrollview),那么您应该使内部滚动视图不可滚动。
在您的情况下,tableview 的高度应等于其内容的高度,以便它不再可滚动。但是父滚动视图将有助于滚动。这将防止滚动冲突。
使用 ContentSizesTableView 代替 TableView。
class ContentSizedTableView: UITableView {
override var contentSize: CGSize {
didSet{
self.invalidateIntrinsicContentSize()
}
}
override var intrinsicContentSize: CGSize {
self.layoutIfNeeded()
return contentSize
}
override func reloadData() {
super.reloadData()
invalidateIntrinsicContentSize()
layoutIfNeeded()
}
}
推荐阅读
- java - 创建 bean 时出错:org.hibernate.AnnotationException:@Temporal 只能在 java.util.Date 或 java.util.Calendar 属性上设置
- comments - 我如何在 VSC 的 html 评论中更改括号颜色
- c# - Rider 使用 ASP.NET Core 2.1 应用程序冻结
- python - Selenium,Python,异常。StaleElementReferenceException 错误消息
- node.js - NodeJS如何更改节点请求网址
- automated-tests - 如何解决katalon上的“您的连接不是私人的”
- flutter - 如何在列表视图构建器中处理多个倒数计时器
- system - 如何获得像 bochs 这样的 qemu 重启原因
- mongodb - 在编写 mongo db 聚合查询时需要帮助
- solidity - Uniswap Clone 在提供流动性后未能展示和使用流动性池。错误是什么?