按下浮动操作按钮时,动态添加数据到表

时间:2017-08-07 13:59:52

标签: ios swift3 scroll floating-action-button dynamic-columns

我有一个scrollView(来自自定义UITableView()的子类),它有行数和列数,并在水平和垂直方向上滚动。当按下浮动操作按钮时,我必须将数据动态添加到scrollView。

更新:我能够在行和列中成功显示动态数据。但我不想在滚动时加载带有所有动态数据的scrollView,因为数据太大而无法处理。相反,我最初只需要显示5列,当用户按下浮动操作按钮时,数据应该再次动态添加到行和列中,计数为5列和'x'行。

按下浮动操作按钮时,我无法向scrollView添加动态数据。另外,如何在最初只显示5列,并在按下浮动操作按钮时添加更多5 * n列。

非常感谢任何建议或帮助。谢谢:))

1 个答案:

答案 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链接。

enter image description here