Перезагрузка одной строки в PFTableViewCell — возвращает, что PFTableViewCell не имеет cellForRowMethod

Хорошо, поэтому я пытался сделать кнопку «Мне нравится» для приложения, над которым я работаю, и я использую синтаксический анализ в качестве бэкэнда. Пока я могу обновить кнопку «Мне нравится» в анализе, однако я могу перезагрузить только всю таблицу, а не только одну ячейку. Перезагрузка всего табличного представления иногда приводит к тому, что табличное представление перемещается вверх или вниз, я полагаю, из-за ячеек разного размера.

      @IBAction func topButton(sender: UIButton) {
    let uuid = UIDevice.currentDevice().identifierForVendor.UUIDString
    let hitPoint = sender.convertPoint(CGPointZero, toView: self.tableView)
    let hitIndex = self.tableView.indexPathForRowAtPoint(hitPoint)
    let object = objectAtIndexPath(hitIndex)

    let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: hitIndex!) as TableViewCell
    //var indexOfCell:NSIndexPath

    //indexOfCell = hitIndex!
    if object.valueForKey("likedBy") != nil {

        var UUIDarray = object.valueForKey("likedBy")? as NSArray
        var uuidArray:[String] = UUIDarray as [String]

        if !isStringPresentInArray(uuidArray, str: uuid) {

            object.addObject(uuid, forKey: "likedBy")
            object.incrementKey("count")
            object.saveInBackground()                
            //self.tableView.reloadData()
        }
    }
}

Я уже пробовал cellForRow с правильным indexPath, и он всегда возвращает, что PFTableViewCell не содержит метод cellForRowAtIndexPath. Я читал на форуме, что кто-то смог создать собственный метод для перезагрузки ячейки, а документация Parse использует PAPCache для создания кнопки «Нравится». К счастью для меня, документация для кнопки «Мне нравится» на странице Parse находится на Obj-C, и я написал свое приложение на Swift. Вот ссылка на страницу, если хотите: https://www.parse.com/tutorials/anypic#like. Раздел 6.1.

TD;LR Я не знаю, как обновить ячейку, чтобы все табличное представление не перезагружалось без метода cellForRowAtIndexPath. Может быть, Пользовательский метод? Может быть, метод PAPCache?

РЕШЕНО

  if object.valueForKey("likedBy") != nil {
        var UUIDarray = object.valueForKey("likedBy")? as NSArray
        var uuidArray:[String] = UUIDarray as [String]
        if !isStringPresentInArray(uuidArray, str: uuid) {
            object.addObject(uuid, forKey: "likedBy")
            object.incrementKey("count")
            object.saveInBackground()
            let count = object.valueForKey("count") as Int?
            //cell.count.text = "\(count)"
            self.tableView.reloadRowsAtIndexPaths([hitIndex!], withRowAnimation: UITableViewRowAnimation.None)

Это правильно перезагружает только ячейку, однако теперь все мое табличное представление всегда прокручивается вверх, что не идеально.


person cleme001    schedule 18.04.2015    source источник


Ответы (1)


Я не понимаю, что вы пытаетесь сделать с UUID; hitpoint ;hitIndex, и я не понимаю, что вы хотите, чтобы ваше приложение делало, а у меня нет опыта работы с parse? Я бы прокомментировал ваш вопрос, но для этого мне нужно 50 представителей. Извините, что это не ответ, а вопрос. И если вы имеете в виду cellForRowAtIndexPath, вам нужен UITableView, а не ячейка.

person Stefan Scoarta    schedule 18.04.2015
comment
На самом деле я решил эту проблему с помощью cellForRow. Мне просто нужно было правильно поместить indexPath в массив и сделать его необязательным, чтобы он преуспел. Теперь, хотя вся таблица продолжает прокручиваться при нажатии кнопки «Нравится». ;( - person cleme001; 19.04.2015