簡體   English   中英

奇怪的表格查看選中行時的行/節動畫

[英]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)

我嘗試了以下方法,但它們會使應用程序崩潰或導致單元格無法擴展:-

  • 將動畫方法設置為.None
  • 改用reloadData
  • 存儲selectedRow及其子行的indexPaths,然后使用reloadIndexPaths重新加載所有
  • 存儲所選單元格及其子單元格的行,然后在單擊某行時將其重新加載一次

建議使用insertRowsAtIndexPath和deleteRowsAtIndexPath而不是reloadSection來張貼代碼的實際站點上的某個人,但是我不確定該怎么做。 非常感謝您的幫助。

編輯 -還嘗試了insertRowsAtIndexPath和deleteRowsAtIndexPath,但它似乎與tableView模型的設置方式沖突,並且應用程序崩潰。

在表中插入行應該可以幫助您獲得更一致的表視圖動畫行為。

要在特定的索引路徑中插入行,可以使用'insertRowsAtIndexPaths'方法。 您將需要生成要插入的每個索引路徑,然后將它們傳遞給數組中的方法。

ObjC:

NSArray* arr = your NSIndex Paths...;

[tableView insertRowsAtIndexPaths:arr withRowAnimation:UITableViewRowAnimationFade];

迅速:

table.insertRowsAtIndexPaths([IndexPaths..], withRowAnimation: .Automatic)

https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITableView_Class/#//apple_ref/occ/instm/UITableView/insertRowsAtIndexPaths:withRowAnimation

這就是問題所在: reloadSections(..)使tableView方便地從模型中(對於指定的部分)獲取模型中的所有最新數據,但代價是動畫更加“模糊”。 使用具有.Top動畫樣式的insertRowsAtIndexPaths(..)來實現所需的行為。 如果您的數據模型有問題,請先解決此問題(因為稍后肯定會打擾您)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM