gpt4 book ai didi

ios - TableView 单元格显示最后上传的图像以解析所有单元格?

转载 作者:行者123 更新时间:2023-11-28 08:47:23 25 4
gpt4 key购买 nike

我有一个 PFQueryTableViewController,它从解析中下载我的图像。

我让它正常工作,在所有单元格中显示正确的图像,但今天我也添加了一个标题单元格,现在我的 headerCell 显示了正确的信息并发生了变化(这正是我想要的是)但现在显示 imageView 的单元格显示为所有单元格上传的最新图像,而不是它应该做的不同图像......?!

这是控制我的 tableview 的代码..但我不明白哪里出了问题!

object, 是 var object: PFObject?

    override func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return 46
}

override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return objects!.count
}



override func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let headerCell = tableView.dequeueReusableCellWithIdentifier("PostHeader") as! PostHeaderTableViewCell


let object = objects![section]
let username = object.objectForKey("user")?.objectForKey("username") as? String
headerCell.usernameLabel.text = username!.capitalizedString


let dataFormatter: NSDate = NSDate(timeIntervalSinceNow: -4)
NSLog("Time Ago: %@", dataFormatter.shortTimeAgoSinceNow())
headerCell.timeLabel.text = dataFormatter.shortTimeAgoSinceDate((object.createdAt)!)

if (object.objectForKey("user")!.objectForKey("profilePicture") != nil)
{
let userImageFile:PFFile = object.objectForKey("user")!.objectForKey("profilePicture") as! PFFile
userImageFile.getDataInBackgroundWithBlock({ (imageData: NSData?, error: NSError?) -> Void in
headerCell.postProfilePicture.image = UIImage(data: imageData!)
headerCell.postProfilePicture.layer.cornerRadius = 0.1 * headerCell.postProfilePicture.bounds.size.width
headerCell.postProfilePicture.clipsToBounds = true

})
}


return headerCell
}


override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {


return 1
}




override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath, object: PFObject?) -> PFTableViewCell?
{
let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! BaseTableViewCell

cell.titleLabel?.text = object?.objectForKey("title") as? String

let imageFile = object?.objectForKey("imageFile") as? PFFile
cell.cellImageView?.image = UIImage(named: "circle")
cell.cellImageView?.file = imageFile
cell.cellImageView.loadInBackground()


return cell
}

override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat
{
if indexPath.row + 1 > self.objects?.count
{
return 44
}
let height = super.tableView(tableView, heightForRowAtIndexPath: indexPath)
return height
}

如果有人能提供帮助,那就太好了!

最佳答案

我认为您的问题与您正在使用的覆盖 cellForRowAtIndexPath 方法有关。因为通用 PFQueryTableViewController 仅适用于一个部分,所以当您使用带有签名 (tableView, indexPath, object) 的方法而不是带有签名 的默认方法时(tableView, indexPath) 该方法将始终提取您在 numberOfRowsInSection 中返回的图像数量。我建议您改为使用常规 cellForRowAtIndexPath(tableView: UITableView, indexPath: NSIndexPath) -> UITableViewCell!,然后根据 indexPath 获取对象。

它看起来像这样:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell!
{
let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! BaseTableViewCell
if let object = objects![indexPath.row] as? PFObject {
cell.titleLabel?.text = object?.objectForKey("title") as? String

let imageFile = object.objectForKey("imageFile") as? PFFile
cell.cellImageView?.image = UIImage(named: "circle")
cell.cellImageView?.file = imageFile
cell.cellImageView.loadInBackground()
}
return cell
}

这将为您提供您正在寻找的适当索引路径的图像,而不是总是使用第一个。

您还可以尝试在该方法被调用时打印 indexPath.row,这样您就可以查看 indexPath 是否正在更改。

EIDT:实际上,即使这样似乎也行不通。您可以尝试按照教程here ,但他们明确提到 PFQueryTableViewController 不适用于多个部分。您最好将常规 UITableViewController

子类化

关于ios - TableView 单元格显示最后上传的图像以解析所有单元格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34967766/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com