2015-10-05 3 views
0

В моем приложении, когда TableView клетка перегружается как этотWeird поведения reloadRowsAtIndexPaths

let editItemView = view.viewWithTag(12) as! UITableView 
let indexPath = editItemView.indexPathForRowAtPoint(sender.convertPoint(CGPointZero, toView: editItemView)) 
editItemView.reloadRowsAtIndexPaths([indexPath!], withRowAnimation: UITableViewRowAnimation.Automatic) 

и новая высота меньше, чем старый, иногда (особенно, когда клетка находится в нижней части окна) , части старого содержимого ячейки остаются на экране, покрывая ячейки ниже. Все высоты ячеек правильны, и когда поврежденная ячейка (@ ее новый размер) перемещается из поля зрения, она исчезает. Однако, reloadData работает должным образом. Кто-нибудь знает, как предотвратить это?

ответ

0

Хорошо, я нашел решение: код удалял кнопки из того же UITableViewперед в reloadRowsAtIndexPaths так:

if let dcButton = view.viewWithTag(20) as? UIButton{ 
    dcButton.removeFromSuperview() 
} 

Сведя код после в reloadRowsAtIndexPaths закончил непредсказуемое поведение таблицы.

0

Вы пробовали брекетинг звонка?

editItemView.beginUpdates() 
editItemView.reloadRowsAtIndexPaths([indexPath!], withRowAnimation: UITableViewRowAnimation.Automatic) 
editItemView.endUpdates() 
+0

Спасибо за ответ и да, я сделал, никакого эффекта. Кроме того, в документах Apple говорится о beginUpdates(): «Начинает серию вызовов методов, которые вставляют, удаляют или выбирают строки и разделы представления таблицы». – HansiOber

Смежные вопросы