您可以在AcceptDrop
方法做一個UITableView.MoveRow
並通過NSAnimationContext
擴展行之間的視覺舉動持續時間:
注:這確實不重新排序數據的數據源,如果保護用戶的新數據訂單是必需的,您將不得不手動重新排列數據,以便UITableView.ReloadData
將顯示正確的訂單。
public override bool AcceptDrop(NSTableView tableView, NSDraggingInfo info, nint row, NSTableViewDropOperation dropOperation)
{
var rowData = info.DraggingPasteboard.GetDataForType(typeof(Product).FullName);
if (rowData == null)
return false;
var dataArray = NSKeyedUnarchiver.UnarchiveObject(rowData) as NSIndexSet;
NSAnimationContext.BeginGrouping();
NSAnimationContext.CurrentContext.Duration = 1;
foreach (var originalIndex in dataArray.ToArray())
{
tableView.MoveRow((nint)originalIndex, row);
}
NSAnimationContext.EndGrouping();
return true;
}