Невозможно реализовать ячейку Tableview с действием как для изображения, так и для строки с помощью Parse

У меня проблемы с получением изображения и действия строки в ячейке табличного представления одновременно. Я могу заставить работать несколько различных перестановок (действие строки работает, но изображение загружается только после активации действия строки, загрузки изображения, но действие строки недоступно), но я не могу заставить изображение загружаться при загрузке страницы и иметь доступное действие строки.

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 в viewDidLoad запрос (ниже), но я не могу заставить это работать. Возможно, ответ состоит в том, чтобы решить эту проблему, а не помещать запрос в 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()

0 ответов

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