From 95ee9d0de8b9fc7ebe6247ad65e34c2e8ebb14b5 Mon Sep 17 00:00:00 2001 From: Krunoslav Zaher Date: Mon, 4 Jul 2016 20:55:54 +0200 Subject: [PATCH] Fixes problem with editing UITableView example. #768 --- ...TableViewWithEditingCommandsViewController.swift | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/RxExample/RxExample/Examples/TableViewWithEditingCommands/TableViewWithEditingCommandsViewController.swift b/RxExample/RxExample/Examples/TableViewWithEditingCommands/TableViewWithEditingCommandsViewController.swift index 02cecd91..7c18d925 100644 --- a/RxExample/RxExample/Examples/TableViewWithEditingCommands/TableViewWithEditingCommandsViewController.swift +++ b/RxExample/RxExample/Examples/TableViewWithEditingCommands/TableViewWithEditingCommandsViewController.swift @@ -84,7 +84,14 @@ class TableViewWithEditingCommandsViewController: ViewController, UITableViewDel .observeOn(MainScheduler.instance) let deleteUserCommand = tableView.rx_itemDeleted.map(TableViewEditingCommand.DeleteUser) - let moveUserCommand = tableView.rx_itemMoved.map(TableViewEditingCommand.MoveUser) + let moveUserCommand = tableView + .rx_itemMoved + // This is needed because rx_itemMoved is being performed before delegate method is + // delegated to RxDataSource. + // This observeOn makes sure data is rebound after automatic move is performed in data source. + // This will be improved in RxSwift 3.0 when order will be inversed. + .observeOn(MainScheduler.asyncInstance) + .map(TableViewEditingCommand.MoveUser) let initialState = TableViewEditingCommandsViewModel(favoriteUsers: [], users: []) @@ -171,6 +178,10 @@ class TableViewWithEditingCommandsViewController: ViewController, UITableViewDel return true } + dataSource.canMoveRowAtIndexPath = { _ in + return true + } + return dataSource }