【问题标题】:How to call function when collection view is reloaded?重新加载集合视图时如何调用函数?
【发布时间】:2021-05-25 18:45:08
【问题描述】:

我有一个集合视图,想在用户重新加载它时运行一些东西。这种重新加载是由于用户在视图上向下拖动直到重新加载图标出现。除了用户进行交互以重新加载集合时,将此功能放在其他任何地方,这对我来说都是不可行的解决方案。

【问题讨论】:

  • 如果您从数组中加载项目,您可以检查“CellForRow”函数底部是否是最后一个项目,就在“return”语句之前。
  • “将这个函数放在除了用户进行交互来重新加载集合之外的任何其他地方,这对我来说都是一个不可行的解决方案。”,而不是添加一个方法 func refresh() { doYourThing(); collectionView.reloadData() } 并替换所有你的以前的collectionView.reloadData()refresh()

标签: ios swift uikit scrollview refresh


【解决方案1】:

下面的解决方案怎么样。我为集合视图、表格视图和滚动视图实现了它,以防其他人遇到类似问题:

final class ScrollViewRefreshDemo: UIViewController {

    let collectionView = UICollectionView(frame: .zero, collectionViewLayout: UICollectionViewFlowLayout())
    let tableView = UITableView()
    let scrollView = UIScrollView()

    override func viewDidLoad() {
        super.viewDidLoad()

        attachRefreshListener(to: collectionView)
        attachRefreshListener(to: tableView)
        attachRefreshListener(to: scrollView)
    }

    func attachRefreshListener(to scrollView: UIScrollView) {
        scrollView.refreshControl?.addTarget(self, action: #selector(scrollViewDidRefresh), for: .valueChanged)
    }

    @objc
    func scrollViewDidRefresh() {

        // Execute any task while the scroll view is refreshing
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多