我有一個UITableView
,我在上面打開setEditing:animated:
,以允許用戶插入和刪除行。當編輯處於打開狀態時,我想要將一個新的insert new item
行添加到表格中,然後我想讓編輯控件以類似於正常的方式進行動畫製作。我不希望新的insert new item
行自己動起來,使用類似淡入淡出的東西。我希望它剛剛出現,然後像任何現有的表格數據源行一樣滑入。爲什麼setEditing:animated:和insertRowsAtIndexPaths:導致這種奇怪的編輯風格動畫?
這裏是正在發生的事情爲我當前的代碼的結果,但(點擊查看大圖):
頂行我想要做什麼 - 它只是滑過和刪除圖標變淡當它消失時,刪除圖標淡出並且該行再次展開。
第二行是我自己添加到表格中的非數據源行。出現時,它根本不具有動畫效果。插入圖標和行同時出現,不會滑入。當它消失時,該行很好地展開,但加號圖標隨其滑動。動畫發生在整行,而不是加號圖標,然後單獨行,就像第一行一樣。
下面是我的代碼的一個快速運行,但我認爲提供到類文件的鏈接可能會更好。
當我按下工具欄上的編輯按鈕時,我打電話給我的UIViewController
方法setEditing:animated:
。在這種方法中,我執行以下操作...
- (void)setEditing:(BOOL)editing animated:(BOOL)animated {
[super setEditing:editing animated:animated];
// keep the table in the same editing mode
[_table setEditing:editing animated:animated];
if (editing) {
[_table insertRowsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:_channels.count inSection:0]] withRowAnimation:UITableViewRowAnimationNone];
} else {
[_table deleteRowsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:_channels.count inSection:0]] withRowAnimation:UITableViewRowAnimationNone];
}
}
這是插入的動畫出現的位置。我嘗試在[_table beginUpdate]和endUpdate中包裝整個事物,以及僅插入行。這兩者似乎都沒有產生我打算乾淨的動畫。
任何想法可能會失蹤?整個代碼文件是在這裏:
感謝
這是否太本地化?我知道有一種方法可以讓這些動畫保持同步,因爲我看到其他應用可以執行此操作。 – Ryan
嘗試移動[super setEditing:編輯動畫:動畫];在您的setEditing方法的末尾 –
爲動畫GIF! –