滚动到底部时,UITableView更新数据

时间:2016-09-21 19:05:10

标签: ios swift uitableview uiscrollviewdelegate

当桌面视图在底部滚动时,我从服务器获取新内容。获取数据但未在UI中更新。我已经放置了断点并检查了数组包含的内容,它会根据需要进行更新,但不会在UI上进行更新。

func scrollViewDidScroll(scrollView: UIScrollView) {
    let contentOffset = scrollView.contentOffset.y
    let maximumOffset = scrollView.contentSize.height - scrollView.frame.size.height;

    if !isLoadingMore && (Double(maximumOffset) - Double(contentOffset) <= threshold)
    {
        loadData(typeInString, start: start, userId: "", lat: "", long: "")
        self.isLoadingMore = true

        // Update UI
        dispatch_async(dispatch_get_main_queue()) {
            self.tableView.reloadData()
            self.isLoadingMore = false
        }
    }
}



func loadData(type: String, start: Int, userId: String, lat: String, long: String) {
        Alamofire.request(.GET,Pagination.toGetUrl(type, start: start, userId: userId, lat: "",long: ""))
        .responseJSON { response in
            print(response.0?.URLString)
            if (response.2.value != nil){
                if let json: JSON = JSON(response.2.value!){
                    if !json["error"].boolValue{

                        if json["data"].count == 0 {
                            self.checkData = false
                        }
                        print("#$#$#$#$")
                        print(json)
                        print("#$#$#$#$")

                        if type == "users"{
                            for (_, subjson):(String, JSON) in json["data"]{
                                self.imagesURL.append(subjson["profile_image_url_small"].stringValue)
                                self.userName.append(subjson["name"].stringValue)
                            }

                        }
                    }
                }
            }

    }

1 个答案:

答案 0 :(得分:0)

您发出异步loadData请求,然后立即重新加载表视图。只有在一段时间后请求完成,才更新数据,没有任何反应。您需要在请求完成后重新加载表视图,而不是之前。

......
if type == "users"{
    for (_, subjson):(String, JSON) in json["data"] {
        self.imagesURL.append(subjson["profile_image_url_small"].stringValue)
        self.userName.append(subjson["name"].stringValue)
    } 
}

// Update UI
dispatch_async(dispatch_get_main_queue()) {
    self.tableView.reloadData()
    self.isLoadingMore = false
}
......