[英]Strange tableView row/section animation when row is selected
這個很酷的擴展tableView很好用,但是當您選擇某些行時,就會出現奇怪的動畫。
該表有多個部分,單擊時每一行可以顯示其他行。 在plist中使用各種值來構造行的外觀和行為,例如,如果plist中某行的布爾值“ isExpandable”屬性設置為true,而其“ additionalRows”屬性設置為2,則該行可以擴展以顯示2個子行。
該表的問題在於,當單擊每個部分的第一個單元格時,動畫運行良好,但是當單擊其他單元格時,它們會隨機播放:
我懷疑發生奇怪的動畫是因為單擊單元格時重新加載了所有節,因為ViewController文件中didSelectRowAtIndexPath下的這一行:
tbl.reloadSections(NSIndexSet(index: indexPath.section), withRowAnimation: .Automatic)
我嘗試了以下方法,但它們會使應用程序崩潰或導致單元格無法擴展:-
建議使用insertRowsAtIndexPath和deleteRowsAtIndexPath而不是reloadSection來張貼代碼的實際站點上的某個人,但是我不確定該怎么做。 非常感謝您的幫助。
編輯 -還嘗試了insertRowsAtIndexPath和deleteRowsAtIndexPath,但它似乎與tableView模型的設置方式沖突,並且應用程序崩潰。
在表中插入行應該可以幫助您獲得更一致的表視圖動畫行為。
要在特定的索引路徑中插入行,可以使用'insertRowsAtIndexPaths'方法。 您將需要生成要插入的每個索引路徑,然后將它們傳遞給數組中的方法。
ObjC:
NSArray* arr = your NSIndex Paths...;
[tableView insertRowsAtIndexPaths:arr withRowAnimation:UITableViewRowAnimationFade];
迅速:
table.insertRowsAtIndexPaths([IndexPaths..], withRowAnimation: .Automatic)
這就是問題所在: reloadSections(..)
使tableView
方便地從模型中(對於指定的部分)獲取模型中的所有最新數據,但代價是動畫更加“模糊”。 使用具有.Top
動畫樣式的insertRowsAtIndexPaths(..)
來實現所需的行為。 如果您的數據模型有問題,請先解決此問題(因為稍后肯定會打擾您)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.