我跟随this official documentation by Apple。我试图在UITableView
上实现拖放功能。问题是,行不会移动通过他们的行。如你所见,他们总是反弹:
这是我的代码:
func tableView(tableView: UITableView, moveRowAtIndexPath sourceIndexPath: NSIndexPath, toIndexPath destinationIndexPath: NSIndexPath)
{
// This gets called, when I reach a UITableViewCell above or below
// the one UITableViewCell I'm dragging around. This is the part
// where it always snaps back I think.
}
func tableView(tableView: UITableView, targetIndexPathForMoveFromRowAtIndexPath sourceIndexPath: NSIndexPath, toProposedIndexPath proposedDestinationIndexPath: NSIndexPath) -> NSIndexPath
{
return proposedDestinationIndexPath
}
我使用DZNEmptyDataSet库并不太确定,如果这会干扰UITableView
的原始功能。
我在这里缺少什么?
编辑我在项目中创建了一个ViewController
TableView
,其行为完全相同。但是,如果我尝试在新项目中实现此功能,它只是按预期工作。
答案 0 :(得分:0)
问题'是另一个图书馆MMDrawerController。在我的TableView
上启用修改后,我必须停用MMDrawerController
手势。这里的代码解决了我的问题:
///
/// Enable edit mode
///
func editEntries()
{
self.disableDrawerFunctionality()
self.tableView.setEditing(true, animated: true)
self.navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Fertig", style: .Plain, target: self, action: "finishedEditing:")
}
func finishedEditing(sender: AnyObject)
{
self.tableView.setEditing(false, animated: true)
self.navigationItem.rightBarButtonItem = self.barButtonItemEdit
self.enableDrawerFunctionality()
}
// MARK: - Toggle Drawer functionalities
///
/// While in TableView edit mode: Be sure to disable the MMDrawer gestures, since the gestures will colide
/// with gestures of the TableView
///
func enableDrawerFunctionality()
{
mm_drawerController.openDrawerGestureModeMask = .PanningCenterView
mm_drawerController.closeDrawerGestureModeMask = .PanningDrawerView | .PanningCenterView
}
///
/// When leaving TableView edit mode: Re-enable the MMDrawer gestures after finishing editting the TableView
///
func disableDrawerFunctionality()
{
mm_drawerController.openDrawerGestureModeMask = .None
mm_drawerController.closeDrawerGestureModeMask = .None
}
他们自述文件的部分引起了我的注意:
您可以自由设置打开和关闭所需的任何组合。请注意,这些手势可能会影响发送到子视图控制器的触摸,因此请务必对您的应用程序使用这些手势。例如,如果MKMapView是您的中心视图控制器,则您不希望设置MMOpenDrawerGestureModePanningCenterView,因为它会拦截用于在地图上移动的平移。