У меня есть UITableView
с данными, полученными из веб-api (который также разбит на страницы и доступен для поиска). Каждая ячейка является обычным UITableViewCell
, который я создал и содержит объект данных. Ячейка имеет два состояния, нормальные и добавленные.ios сохранить UITableViewCell макет после прокрутки
Обычный имеет одну кнопку «добавить», чтобы добавить объект данных в выбранный массив объектов. Добавленный режим схож, но с тем, чтобы содержимое было сдвинуто вправо на несколько пикселей, чтобы отобразить кнопку «удалить».
Когда я добавляю один элемент в массив, я анимирую ячейку для перемещения вправо и показываю кнопку удаления. Теперь моя проблема:
Когда я прокручиваю (или когда я делаю новый поиск), я, похоже, не знаю, как сбросить ячейку в «добавленное» состояние.
То, что я пробовал:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let myCustomCell = tableView.dequeueReusableCellWithIdentifier("MyCellIdentifier", forIndexPath: indexPath) as MyCustomCell
let dataObject = fromApiArray[indexPath.row]
myCustomCell.dataObject = dataObject
if selectedObjects.contains(dataObject) {
myCustomCell.setToAddedState = true //flag to use inside the cell code in prepareForReuse or wherever I don't really know...
myCustomCell.moveCellToRight() //just another way I tried. calling the method that animates the cell from the tableviewcontroller... (sounds silly I guess)
}
return myCustomCell
}
Я попытался назвать клетку moveCellToRight()
, но я предполагаю, что клетка втягивается после возвращения его здесь с «нормальным» состоянием. Поскольку это не помогло, я пошел и установил логическое значение (setToAddedState) и попытался использовать методы prepareForReuse
и layoutSubviews
внутри ячейки, но это тоже не помогает.
Кроме того, некоторые ячейки фактически переходят в «добавленное» состояние, но случайным образом. Если я печатаю объект dataObject в пределах prepareForReuse
, он печатает правильно. Так что моя единственная вещь, которая отсутствует здесь, заключается в том, как заставить ячейку отобразить правильное состояние.
Заранее благодарим за любую помощь.
Когда dequeue, ячейка повторного использования сохранит предыдущее состояние. поэтому вы должны установить базовую структуру ячейки для каждого состояния, а не состояние по умолчанию и добавленное состояние. – SolaWing