ios - 像刷新一样重新加载 tableview View

标签 ios arrays swift uitableview

我正在用 json 数据填充 tableview 并且它的工作成功但现在我想在刷新按钮上更新 tableview 单击刷新按钮我再次调用我创建的现有 func 调用 api 让我告诉你我的代码

代码

func OverdueList(){
    let preferences = UserDefaults.standard
    let uid = "u_id"
    let acTkn = "acc_tkn"

    let u_ID = preferences.object(forKey: uid)
    let A_Token = preferences.object(forKey: acTkn)

    let params = ["user_id": u_ID!, "access_token": A_Token!]
    print(params)
    SVProgressHUD.show()
    Alamofire.request(inspectionsList, method: .post, parameters: params).responseJSON(completionHandler: {(response) in
        switch response.result{
        case.success(let value):
            let json  = JSON(value)
            print(json)
            let data = json["inspections_overdue_data"]
            print(data)
            if data == []{
                self.viewNodata.isHidden = false
            }else{
                data.array?.forEach({ (iunOverDue) in
                    let iOveList = OvedueModel(surveyor_id: iunOverDue["surveyor_id"].stringValue, country: iunOverDue["country"].stringValue, time: iunOverDue["time"].stringValue, address2: iunOverDue["address2"].stringValue, address3: iunOverDue["address3"].stringValue, notes: iunOverDue["notes"].stringValue, house_num: iunOverDue["house_num"].stringValue, name: iunOverDue["name"].stringValue, address1: iunOverDue["address1"].stringValue, latitude: iunOverDue["latitude"].stringValue, eircode: iunOverDue["eircode"].stringValue, date_inspected: iunOverDue["date_inspected"].stringValue, property_id: iunOverDue["property_id"].stringValue, county: iunOverDue["county"].stringValue, client_id: iunOverDue["client_id"].stringValue, longitude: iunOverDue["longitude"].stringValue)
                    self.searchResult = self.overDueData
                    self.overDueData.append(iOveList)
                })

                self.tblOvedue.reloadData()
            }
            SVProgressHUD.dismiss()
        case.failure(let error):
            print(error.localizedDescription)
        }

    })
}

我正在调用这个函数来填充表格 View ,我正在这样做

@IBAction func btnRefreshTapped(_ sender: UIButton) {
      OverdueList()
    }

问题是,在重新调用这个函数数据后,一遍又一遍重复,我该如何解决这个问题?

最佳答案

请试试这段代码:

func OverdueList(){


    let preferences = UserDefaults.standard
    let uid = "u_id"
    let acTkn = "acc_tkn"

    let u_ID = preferences.object(forKey: uid)
    let A_Token = preferences.object(forKey: acTkn)

    let params = ["user_id": u_ID!, "access_token": A_Token!]
    print(params)
    SVProgressHUD.show()
    Alamofire.request(inspectionsList, method: .post, parameters: params).responseJSON(completionHandler: {(response) in
        switch response.result{
        case.success(let value):
            self.overDueData.removeAll()
            let json  = JSON(value)
            print(json)
            let data = json["inspections_overdue_data"]
            print(data)
            if data == []{
                self.viewNodata.isHidden = false
            }else{
                data.array?.forEach({ (iunOverDue) in
                    let iOveList = OvedueModel(surveyor_id: iunOverDue["surveyor_id"].stringValue, country: iunOverDue["country"].stringValue, time: iunOverDue["time"].stringValue, address2: iunOverDue["address2"].stringValue, address3: iunOverDue["address3"].stringValue, notes: iunOverDue["notes"].stringValue, house_num: iunOverDue["house_num"].stringValue, name: iunOverDue["name"].stringValue, address1: iunOverDue["address1"].stringValue, latitude: iunOverDue["latitude"].stringValue, eircode: iunOverDue["eircode"].stringValue, date_inspected: iunOverDue["date_inspected"].stringValue, property_id: iunOverDue["property_id"].stringValue, county: iunOverDue["county"].stringValue, client_id: iunOverDue["client_id"].stringValue, longitude: iunOverDue["longitude"].stringValue)
                    self.searchResult = self.overDueData
                    self.overDueData.append(iOveList)
                })

                self.tblOvedue.reloadData()
            }
            SVProgressHUD.dismiss()
        case.failure(let error):
            print(error.localizedDescription)
        }

    })
}

可能对你有帮助谢谢。

关于ios - 像刷新一样重新加载 tableview View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54234466/

相关文章:

java - 如何使用 PostgreSQL 和 Hibernate 映射 Java 多维数组

javascript - 在数组对象中查找一个值并使用该对象中的另一个值

swift - 需要通用的 FetchedResultsController 构建器(Swift)

IOS如何彻底删除一个View

iphone - 当我调用 UIDocumentInteractionController 方法 "presentOpenInMenuFromRect: inView: animated:"时,iPad 应用程序崩溃

ios - RTL(从右到左)通过自动布局在 iOS 6.1/iOS 7.0 上损坏?

c# - 如何在 C# 中将 struct System.Byte byte[] 转换为 System.IO.Stream 对象?

ios - 无法自动更新 TableView 中的子值

SwiftUI:更改 macOS 上的默认命令菜单

ios - 获得Facebook等周边地区名称的简单方法?