【问题标题】:Update TableView with Array data使用数组数据更新 TableView
【发布时间】:2019-11-04 05:26:06
【问题描述】:

我在viewDidLoad 中有一个PFQuerygetUserPicPostData 中调用。输出显示数组计数中有 3 张图像。

ViewdidLoad:

func getUserPicPostData() {
    let query = PFQuery(className: "PicPost")
    query.whereKey("Username", equalTo: usernameSelected)
    query.findObjectsInBackground(block: { (objects: [PFObject]?,error: Error?) in
        if let objects = objects {
            for object in objects {
                self.picLikeArray.append(object["UserLikes"] as! Int)
                self.picTimeArray.append(object["UserTime"] as! String)
                self.picObjectIdArray.append(object.objectId!)

                let userImageFile = object["ImageFile"] as? PFFileObject

                userImageFile?.getDataInBackground(block: { (imageData: Data?, error: Error?) in
                    if error == nil {
                        self.picPostArray.append(UIImage(data: imageData!)!) 
                        print(self.picPostArray.count)
                    } 
                    else {
                        print(error)
                    }
                })
            } 
        }
    })
}

然后我想告诉我的细胞接受 imageArray 的输入。 PicPostArray 现在为零??

cellForRowAtIndexPath:

print(picPostArray)
cell.imageView1.imageView!.image = picPostArray[0]
cell.imageView2.imageView!.image = picPostArray[1]
cell.imageView3.imageView!.image = picPostArray[2]

【问题讨论】:

  • 你在哪里初始化 picObjectIdArray?
  • 你在哪里调用 tableView.reloadData()
  • 确保您的迭代正确地将值附加到数组中,并且在完成所有迭代后立即重新加载 tableview。
  • 我在 viewdidappear 中调用 tableview 重新加载

标签: ios arrays swift tableview viewdidload


【解决方案1】:

在列表中添加图片后重新加载tableView即可。

picPostArray初始化会是

var picPostArray:[UIImage] = [] // picPostArray not nil 

然后在数组上设置图像时重新加载tableView。

self.picPostArray.append(UIImage(data: imageData!)!) 
self.tableView.reloadData()

由于是异步请求,需要重新加载tableView。

希望这能解决这个问题。

【讨论】:

  • 我在 ViewdidAppear 中重新加载了不属于 tableView 的其他数据。
  • 目前可以一一获取图片数据。所以需要在列表中添加图片时添加tableView reload。 ViewDidAppear 中的 TableView 重新加载对于图像是可以的。但其他图像是异步加载的。在此过程中,图像被添加到列表中,但表格视图不显示图像。当列表中添加图像时,您必须重新加载 tableview。
【解决方案2】:

当您重新加载表格时,您的 picPostArray 为 nil,因为它尚未设置。这是由于您的异步query.findObjectsInBackground。要解决这个问题,您只能在设置picPostArray 时重新加载表:

var picPostArray: [UIImage] = [] {
    didSet {
        yourTableView.reloadData()
    }
}

【讨论】:

  • 我怎么称呼这个?
  • 在创建变量的viewDidLoad 之前添加didSet,如上例所示
  • 嗯它仍然显示索引超出范围
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-11
  • 1970-01-01
  • 2018-02-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多