UITableviewCell accessoryView не может быть изменен

Мне нужно изменить accessoryView для правильного UIImageView

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

     var cell = tableView .dequeueReusableCellWithIdentifier("ActivitySectionCell") as! ActivitySectionCell
     var imageNameOfAccessory = expandedSections.containsIndex(indexPath.section) ? "collapse" : "edit"
     cell.accessoryView = UIImageView(image: UIImage(named: imageNameOfAccessory))
     return cell
}


func tableView(tableViewMethod: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
            tableViewMethod.deselectRowAtIndexPath(indexPath, animated: true)

               var cell = tableView(self.tableViewMain, cellForRowAtIndexPath: indexPath) as! ActivitySectionCell
               if currentlyExpanded {
                    var imageNameOfAccessory = !currentlyExpanded ? "collapse" : "edit"
                    cell.accessoryView = UIImageView(image: UIImage(named: imageNameOfAccessory))
                }
                else {
                    var imageNameOfAccessory = !currentlyExpanded ? "collapse" : "edit"
                    cell.accessoryView = UIImageView(image: UIImage(named: imageNameOfAccessory))
                }


    }

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

Поэтому, когда я устанавливаю accessoryView в самом начале, я не могу изменить его после этого (на самом деле я могу изменить указатель вида, но после этого на экране я не вижу никаких изменений)

2 ответа

Решение

Я нашел решение. Проблема была в ряду:

var cell = tableView(self.tableViewMain, cellForRowAtIndexPath: indexPath) as! ActivitySectionCell

Я должен был изменить это на:

var cell = tableViewMain.cellForRowAtIndexPath(indexPath) as! ActivitySectionCell

Потому что иначе я поменяю не текущую ячейку, а другую возвращающуюся ячейку

Я думаю, что вам, возможно, придется сделать if currentlyExpanded { регистрироваться cellForRowAtIndex и просто позвони self.tableView.reloadData в didSelectRowAtIndex,

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