1

我正在使用 PFQueryTableViewController 并将其设置为仅查找已批准或发送给他的该用户的友谊。

“fromUser”和“toUser”是指向用户类的指针,我需要查询结果中包含的每个用户的用户名和 profilePicture。

现在我尝试在我的 cellForRowAtIndexPath 方法中获取它们并加载图像:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath, object: PFObject?) -> PFTableViewCell? {


    let cellIdentifier = "contactCell"

    let cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier) as! PFTableViewCell

    if let user = object?["fromUser"] as? PFUser {

        user.fetchInBackgroundWithBlock({ (user, error) -> Void in

            if error != nil {

                println("Could not fetch user object")
            }

            let user = user as! PFUser
            cell.textLabel?.text = user.username!
            cell.imageView?.file = user["profilePicture"] as? PFFile
            cell.imageView?.loadInBackground()
        })



    } }

让用户名显示在 tableView 中工作得很好,但实际上从未加载图像。我尝试了不同的方法来加载图像,但我的单元格的 imageView 属性始终为零。

  • 原型的类设置为 PFTableViewCell
  • 控制器链接到情节提要中的视图

请让我知道,如果你们知道为什么这个内置属性是 nil 以及如何解决这个问题。

谢谢,

4

2 回答 2

0

好吧,我找到了一个实际上效果很好的解决方法:

  1. 在您的 TableView(故事板)中创建一个原型单元格并将其类设置为普通的“UITableViewCell”
  2. 将此单元格的重用标识符属性设置为您喜欢的值
  3. 让您的自定义单元格的文件所有者(我为此单元格创建了一个 nib 文件)成为 PFTableViewCell 的子类
  4. 为 textLabel 和 imageView 创建自定义 outlet
  5. 在 TableViewController 中为第 2 步中设置的重用标识符注册该 Nib
  6. 最后,在 cellForRowAtIndexPath 方法中使用该类,如下所示:

    让单元格:PeopleTableViewCell!= tableView.dequeueReusableCellWithIdentifier("peopleCell") as? 人表视图单元格

我希望这也能解决你的问题。

问候,

[编辑]:似乎 SO 不喜欢我的代码片段被格式化。它嵌入在代码标签中..

于 2015-04-23T05:37:34.587 回答
0

PFTableViewCell 不适用于标准样式。因此,您必须使您的单元格成为自定义单元格。

这些是我为使其工作而采取的步骤(在故事板中):

  • 用你自己的类子类 PFTableViewCell
  • 在情节提要中,使用自定义单元格自定义原型单元格
  • 从调色板中拖动一个 UIImageView,然后将其类设置为 PFImageView
  • 将其连接到 PFQueryTableViewController 子类中的 IBOutlet
  • 以您的方式在 PFQueryTableViewController 中实现 cellForRowAtIndexPath: (您的代码没问题)。

这种方式对我有用。

于 2015-08-19T21:48:45.670 回答