UITableView第二次加载直到滚动才更新

时间:2017-02-25 11:59:26

标签: ios swift uitableview tableviewcell

我有一个视图和一个显示文件列表的tableview。当用户在视图中单击按钮时,我打开tableview。用户单击文件列表行然后我开始从我的服务器下载文件,当下载开始时我更改了文件名如“11111”,当下载完成更改文件名如“22222”时(现在更改文件名后面我会进展视图) 在第一次运行中一切正常。下载并更改名称。但是在tableview中,当我再次查看并再次访问tableview时,下载正在运行,但不会在tableview中更改文件名。

我的代码有什么问题,如何显示文字值?

PS:在返回单元格之前在tableview中打印文本值时,它会显示正确的文本。

我的代码:

func setProgressValue(_ dict : NSDictionary){

    //Download progress value
    let cellProgressValue = dict.value(forKey: "value") as! Float

    if cellProgressValue < 1.0{

         fileList[cellNum].title = "111111"
         updateTable()
    }
    else{

        fileList[cellNum].title = “22222”
        updateTable()   
    }
}

func updateTable(){

        self.tableView.reloadData()
    }


func numberOfSections(in tableView: UITableView) -> Int {
        // #warning Incomplete implementation, return the number of sections
        return 1
    }

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        // #warning Incomplete implementation, return the number of rows
        return fileList.count
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

        let identifier = "fileCell"

        let cell = tableView.dequeueReusableCell(withIdentifier: identifier, for: indexPath)

        cell.textLabel?.text = self.fileList[indexPath.row].title

        return cell
    }

//在viewdidload中调用     func getFiles(){

        for index in songList{

            let urlString = "https://www.myapis.com/data/files"

            Alamofire.request(urlString).validate().responseJSON { response in

                let result = JSON(response.result.value)

                    if let items = result["items"].array {

                        for item in items {

                            //print(item)

                            let id = item["fileId"].stringValue
                            let title = ["fileName"].stringValue

                            let file = Files()
                            file.id = id
                            file.title = title

                            self.fileList.append(song)
                        }

                        self.tableView.reloadData()
                    }                
            }
        }

    }

0 个答案:

没有答案