我无法同时在表格视图单元格上获取图像和行操作。我可以获得一些不同的排列方式(行操作有效,但图像仅在行操作激活后加载,图像加载但行操作不可用)但我无法在页面加载时加载图像并且无法访问行操作。
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("childrenCell", forIndexPath: indexPath) as! ChildrenTableViewCell
cell.textLabel?.text = childFirstName[indexPath.row]
cell.detailTextLabel?.text = childLastName[indexPath.row]
self.childImage[indexPath.row].getDataInBackgroundWithBlock { (imageData: NSData?, error: NSError?) -> Void in
if error == nil {
let image = UIImage(data: imageData!)
cell.imageView?.image = image
}
self.tableView.reloadData()
}
return cell
}
上面的代码用于用数据填充单元格。如果我四处self.tableView.reloadData()
走动,我会得到不同的组合(但不是我想要的组合)。行操作的代码非常标准,为用户提供了两个选项。
附带说明一下,我更喜欢从 Parse in viewDidLoad
query 中获取数据(如下),但我似乎无法让它工作。也许答案是解决这个问题,而不是将查询放在cellForRowAtIndexPath
.
let query = PFQuery(className:"children")
query.whereKey("programID", equalTo: passedProgramID!)
query.findObjectsInBackgroundWithBlock {
(objects: [PFObject]?, error: NSError?) -> Void in
if error == nil {
print("Successfully retrieved \(objects!.count) children.")
if let objects = objects {
for object in objects {
self.childFirstName.append(object["childFirstName"] as! String)
self.childLastName.append(object["childLastName"] as! String)
self.childImage.append(object["childImage"] as! PFFile)
}
}
} else {
print("Error: \(error!) \(error!.userInfo)")
}
}
self.tableView.reloadData()