我有一个scrollView
(来自自定义UITableView()
的子类),它有行数和列数,并在水平和垂直方向上滚动。当按下浮动操作按钮时,我必须将数据动态添加到scrollView。
更新:我能够在行和列中成功显示动态数据。但我不想在滚动时加载带有所有动态数据的scrollView,因为数据太大而无法处理。相反,我最初只需要显示5列,当用户按下浮动操作按钮时,数据应该再次动态添加到行和列中,计数为5列和'x'行。
按下浮动操作按钮时,我无法向scrollView添加动态数据。另外,如何在最初只显示5列,并在按下浮动操作按钮时添加更多5 * n列。
非常感谢任何建议或帮助。谢谢:))
答案 0 :(得分:0)
我建议使用CollectionView,它具有内置的水平滚动支持,而不是自定义的TableView。
对于“浮动操作按钮”,我建议创建一个单独的视图,该视图有一个标签,告诉用户释放以加载更多项目,并在用户到达scrollView结尾时移动。在以下示例中,load more视图的宽度为100px,并建议用户在拖动视图85px后松开手指。
Swift 3
@IBOutlet fileprivate weak var loadMoreView: UIView!
@IBOutlet fileprivate weak var loadMoreLabel: UILabel!
@IBOutlet fileprivate weak var loadMoreConstraint: NSLayoutConstraint!
func scrollViewDidScroll(_ scrollView: UIScrollView) {
if scrollView.contentOffset.x + scrollView.frame.size.width > scrollView.contentSize.width {
loadMoreView.isHidden = false
loadMoreLabel.text = "Load more"
if (scrollView.contentOffset.x + scrollView.frame.size.width) - scrollView.contentSize.width > 85 {
loadMoreLabel.text = "Release"
}
if (scrollView.contentOffset.x + scrollView.frame.size.width) - scrollView.contentSize.width < 100 {
loadMoreConstraint.constant = 100 - ((scrollView.contentOffset.x + scrollView.frame.size.width) - scrollView.contentSize.width)
}
} else {
loadMoreView.isHidden = true
loadMoreConstraint.constant = 100
}
}
func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) {
if scrollView.contentOffset.x + scrollView.frame.size.width > scrollView.contentSize.width {
if (scrollView.contentOffset.x + scrollView.frame.size.width) - scrollView.contentSize.width > 85 {
// TODO: <Load more logic here>
}
}
}
load more视图具有以下约束,其中“Align Trailing”约束与上面代码中的loadMoreConstraint IBOutlet链接。