完成从Web加载数据后,不会删除swift activityIndi​​cater

时间:2017-08-30 12:59:41

标签: swift tableview

我在tableView中进行了无限滚动,它运行得很好,但问题是activityIndicator在完成数据加载时不会隐藏。

override func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
    let footerView = tableView.dequeueReusableHeaderFooterView(withIdentifier: footerCellid) as! HeadFooterCell

    if !isInitUILoad {    
        tableView.tableFooterView?.isHidden = true

        loadMore(complition: { (isDone) in
            self.activityIndicatorView.stopAnimating()
        })
    }
    return footerView
}

override func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {       
    return 0.01
}

override func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
    let lastSectionIndex = tableView.numberOfSections - 1
    let lastRowIndex = tableView.numberOfRows(inSection: lastSectionIndex) - 1
    if indexPath.section ==  lastSectionIndex && indexPath.row == lastRowIndex {
        // print("this is the last cell")
        let spinner = UIActivityIndicatorView(activityIndicatorStyle: .gray)
        spinner.startAnimating()
        spinner.backgroundColor = .green
        spinner.frame = CGRect(x: CGFloat(0), y: CGFloat(0), width: tableView.bounds.width, height: CGFloat(44))

        self.tableView.tableFooterView = spinner
        self.tableView.tableFooterView?.isHidden = false
    }
}

1 个答案:

答案 0 :(得分:0)

首先你必须删除这两个函数" viewForFooterInSection"和" heightForFooterInSection"。接下来你必须添加" willDisplay"功能。希望在使用此代码后解决您的问题

覆盖func tableView(_ tableView:UITableView,willDisplay cell:UITableViewCell,forRowAt indexPath:IndexPath){

<强> willDisplay

    let lastSectionIndex = tableView.numberOfSections - 1
    let lastRowIndex = tableView.numberOfRows(inSection: lastSectionIndex) - 1
    if indexPath.section ==  lastSectionIndex && indexPath.row == lastRowIndex {

        let spinner = UIActivityIndicatorView(activityIndicatorStyle: .gray)
        spinner.backgroundColor = .yellow


        spinner.frame = CGRect(x: CGFloat(0), y: CGFloat(0), width: tableView.bounds.width, height: CGFloat(50))

        self.tableView.tableFooterView = spinner
       self.tableView.tableFooterView?.isHidden = false


        if !isInitUILoad {

            spinner.startAnimating()

            loadMore(complition: { (isDone) in

                spinner.stopAnimating()


            })


        }

    }

}