首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过使用拖动委托将一行向上或向下拖动来重新排列表中的节(iOS 11)

通过使用拖动委托将一行向上或向下拖动来重新排列表中的节(iOS 11)
EN

Stack Overflow用户
提问于 2019-04-20 05:53:39
回答 2查看 711关注 0票数 1

我想在表视图中启用拖放。我只想拖动项目在应用程序,我不希望它被转移到其他应用程序。

我找到了两种实现表视图重新排列的方法。

第一种方法:使用拖放委托

拖动委托文档 支持iOS11中的表视图中的拖放

对我来说,不允许应用程序之间的拖放是非常重要的。

在这种情况下,正在使用拖动委托确定?还是应该使用其他解决方案?

// didLoad

代码语言:javascript
复制
[self.myTableView setDragDelegate: self];
[self.myTableView setDragInteractionEnabled: YES];

// itemsForBeginningDragSession

代码语言:javascript
复制
(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];
}

第二种方式: tableview编辑模式

代码语言:javascript
复制
[self.myTableView setEditing: YES];

我不想添加一个按钮并将表视图状态更改为编辑模式。我想通过长时间的媒体重新安排。

EN

回答 2

Stack Overflow用户

发布于 2019-04-20 14:01:49

使用拖放委托的第一个选项是可以的。确保您实现了UITableViewDragDelegate方法- (BOOL)tableView:(UITableView *)tableView dragSessionIsRestrictedToDraggingApplication:(id<UIDragSession>)session并返回YES。这将确保拖放必须发生在同一应用程序。

票数 2
EN

Stack Overflow用户

发布于 2019-04-20 14:00:27

如果一直在使用FMMoveTable由Florian为此目的,这是伟大的工作。但是他现在已经停止使用它了,他说你应该使用IOS 11的拖放功能。虽然我不知道如何将其限制在单个表上。

另一种可能是使用另一个StackOverflow的答案中提到的教程。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55770699

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档