Невозможно загрузить изображение из PARSE в свойство imageView PFTableViewCell

Я работаю с PFQueryTableViewController и настраиваю его, чтобы найти только друзей этого пользователя, которые были одобрены или отправлены ему.

"fromUser" и "toUser" являются указателями на класс пользователя, где мне нужны username и 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
  • Контроллер связан с представлением в раскадровке

Пожалуйста, дайте мне знать, если вы, ребята, имеете какое-либо представление, почему это встроенное свойство равно нулю и как это исправить.

Спасибо,

2 ответа

Ну, я нашел обходной путь, который на самом деле работает довольно хорошо:

  1. Создайте прототипную ячейку в вашем TableView (Storyboard) и установите для ее класса обычный UITableViewCell
  2. Установите для свойства reuseIdentifier этой ячейки значение по своему вкусу.
  3. Пусть владелец файла вашей пользовательской ячейки (я создал nib-файл для этой ячейки) будет подклассом PFTableViewCell
  4. Создайте собственные розетки для textLabel и imageView
  5. Зарегистрируйте этот Nib для reuseIdentifier, заданного на шаге 2, в вашем TableViewController
  6. Наконец, используйте этот класс в вашем методе cellForRowAtIndexPath следующим образом:

    let cell: PeopleTableViewCell! = tableView.dequeueReusableCellWithIdentifier ("peopleCell") как? PeopleTableViewCell

Надеюсь, это тоже исправит ваши проблемы.

С Уважением,

[Редактировать]: Похоже, что SO не нравится мой фрагмент кода для форматирования. Это встроено в теги кода..

PFTableViewCell не работает со стандартными стилями. Таким образом, вы должны сделать свою ячейку индивидуальной.

Вот шаги, которые я предпринял, чтобы заставить его работать (в раскадровке):

  • подкласс PFTableViewCell с вашим собственным классом
  • в раскадровке настройте ячейку прототипа, используя настраиваемую ячейку
  • перетащите UIImageView из палитры, но затем установите его класс как PFImageView
  • подключите его к IBOutlet в вашем подклассе PFQueryTableViewController
  • реализовать cellForRowAtIndexPath: в PFQueryTableViewController так, как вы это делали (ваш код был в порядке).

Этот способ сработал для меня.

Другие вопросы по тегам