У меня есть несколько UITableView
в моем проекте, и иногда мне нужно поменять ячейки между ними.Ячейки достаточно сложны, и каждый раз, когда я перемещаю их из одной таблицы в другую, требуется их повторное создание, поэтому я создаю их один раз, сохраняю в массиве и подбираю необходимые ячейки в cellForRowAtIndexPath
Перемещение ячеек между таблицами выглядитчто-то вроде этого:
NSIndexPath* pathForMovedCell = [firstTableView indexPathForCell:movedCell];
[firstTableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:pathForMovedCell] withRowAnimation:UITableViewRowAnimationFade];
//There is some delay for show animation and switch between view controllers
[secondTableView insertRowsAtIndexPaths:[NSArray arrayWithObject:pathForMovedCell] withRowAnimation:UITableViewRowAnimationFade];
Этот код работает довольно хорошо, но иногда (всегда, если задержка менее 0,33 секунды) ячейка не отображается на secondTableView
.Он обычно вставляется, и будет нарисован, если прокрутить их из видимой области и вернуться назад.Я думаю, что это произойдет, если вставка произойдет до того, как закончится анимация удаления.Если я сделал небольшую задержку, клетки часто исчезают, и я не хочу оставлять большой резерв времени, потому что это выглядит как лаги, поэтому я хочу решить эту проблему правильно.Я пытался добавить [cell setNeedsDisplay]
перед возвратом ячейки из cellForRowAtIndexPath
, но это не работает.
Есть предложения?