我想在表格视图中启用拖放功能。我只想拖动应用程序中的项目,但不希望将其转移到其他应用程序中。
我发现了两种实现表视图重排的方法。
drag delegate documentation supporting drag and drop in tableview in iOS11
对于我来说,禁止在应用之间拖放是非常重要的。
在这种情况下可以使用拖动委托吗? 还是应该使用其他解决方案?
// didLoad
[self.myTableView setDragDelegate: self];
[self.myTableView setDragInteractionEnabled: YES];
// itemsForBeginningDragSession
(NSArray<UIDragItem *> *)tableView:(UITableView *)tableView
itemsForBeginningDragSession:(id<UIDragSession>)session
atIndexPath:(NSIndexPath *)indexPath API_AVAILABLE(ios(11.0)) {
Model *model = self.listOfX[indexPath.section];
NSItemProvider *itemProvider = [[NSItemProvider alloc] initWithObject: model];
UIDragItem *dragItem = [[UIDragItem alloc] initWithItemProvider: itemProvider];
return @[dragItem];
}
[self.myTableView setEditing: YES];
我不想添加按钮并将表格视图状态更改为编辑模式。我想通过长按启用重新排列。
答案 0 :(得分:2)
使用拖放委托的第一个选项很好。确保实现UITableViewDragDelegate
方法- (BOOL)tableView:(UITableView *)tableView dragSessionIsRestrictedToDraggingApplication:(id<UIDragSession>)session
并返回YES
。这样可以确保拖放操作必须在同一应用程序内进行。
答案 1 :(得分:0)
如果出于此目的使用了Florian Mielke的FMMoveTable,效果很好。但是他现在已经停止使用它,指出您应该改用IOS 11拖放功能。尽管我看不到如何将其限制为单个表。
另一种可能性是使用this other StackOverflow answer中提到的教程。