Невозможно загрузить изображение из 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 ответа
Ну, я нашел обходной путь, который на самом деле работает довольно хорошо:
- Создайте прототипную ячейку в вашем TableView (Storyboard) и установите для ее класса обычный UITableViewCell
- Установите для свойства reuseIdentifier этой ячейки значение по своему вкусу.
- Пусть владелец файла вашей пользовательской ячейки (я создал nib-файл для этой ячейки) будет подклассом PFTableViewCell
- Создайте собственные розетки для textLabel и imageView
- Зарегистрируйте этот Nib для reuseIdentifier, заданного на шаге 2, в вашем TableViewController
Наконец, используйте этот класс в вашем методе cellForRowAtIndexPath следующим образом:
let cell: PeopleTableViewCell! = tableView.dequeueReusableCellWithIdentifier ("peopleCell") как? PeopleTableViewCell
Надеюсь, это тоже исправит ваши проблемы.
С Уважением,
[Редактировать]: Похоже, что SO не нравится мой фрагмент кода для форматирования. Это встроено в теги кода..
PFTableViewCell не работает со стандартными стилями. Таким образом, вы должны сделать свою ячейку индивидуальной.
Вот шаги, которые я предпринял, чтобы заставить его работать (в раскадровке):
- подкласс PFTableViewCell с вашим собственным классом
- в раскадровке настройте ячейку прототипа, используя настраиваемую ячейку
- перетащите UIImageView из палитры, но затем установите его класс как PFImageView
- подключите его к IBOutlet в вашем подклассе PFQueryTableViewController
- реализовать cellForRowAtIndexPath: в PFQueryTableViewController так, как вы это делали (ваш код был в порядке).
Этот способ сработал для меня.