【问题标题】:Load 10 cell rows at a time - swift一次加载 10 个单元格行 - 快速
【发布时间】:2016-11-15 16:31:22
【问题描述】:

我目前有一个包含很多帖子的 firebase 数据库。帖子显示在自定义单元格中的 UITableViewController 中。

问题在于它会一次加载所有单元格 - 当有更多帖子出现时,这可能需要很长时间。

如何让它一次只加载 10 个帖子,并在滚动到底部时再加载 10 个?

这就是我获取帖子的方式:

func startObersvingDB() {
        FIRDatabase.database().reference().child("feed-items").observeEventType(.Value, withBlock: { (snapshot: FIRDataSnapshot) in
            var newUpdates = [Sweet]()



            for update in snapshot.children {
                let updateObject = Sweet(snapshot: update as! FIRDataSnapshot)
                newUpdates.append(updateObject)

            }

            self.updates = newUpdates.reverse()
            self.tableView.reloadData()


        }) { (error: NSError) in
            print(error.description)
        }
    }

【问题讨论】:

    标签: ios swift uitableview cell


    【解决方案1】:

    考虑这个让分页与 Firebase 一起工作的示例: Swift iOS: Firebase Paging

    要在滚动时加载更多内容,请在您的视图控制器 (Swift3) 中尝试此操作:

    extension MyViewController:UIScrollViewDelegate {
    func scrollViewDidScroll(_ scrollView: UIScrollView) {
        let offset = scrollView.contentOffset.y
        if offset > self.tableView.contentSize.height - 50 { //This value is adjustable
            functionToPullMoreDatabaseItems()
        }
    }
    }
    

    【讨论】:

    • 这可能是一个非常愚蠢的问题,但是 contentsize 的高度与加载更多帖子有什么关系? :)
    • 当 contentOffset.y 等于 contentSize.height 时,即滚动到底部。减去 50 允许您调用该函数以在到达底部之前从数据库中加载更多数据,以便在您到达它时数据就在那里。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-30
    • 1970-01-01
    • 2016-08-03
    • 2016-05-13
    • 1970-01-01
    相关资源
    最近更新 更多