Tag: Uitableviewdropdelegate

在iOS 11和Swift 4中拖放表格视图单元格

在IOS 11中,UITableView添加了一些专门的API,用于将tableView行从一个tableView拖放到另一个tableView。 对于拖放,我们需要实现委托UITableViewDragDelegate和UITableViewDropDelegate。 UITableView和UICollectionView都具有拖放API(协议)。 对于UICollectionView,可以按照本教程进行操作。 这些代表完全独立,我们可以根据需要使用任何一个代表进行拖放。 两者都适用于拖放。 注意:-请注意, iPhone和iPad均支持拖放功能,在iPad上,不同应用程序,同一应用程序和同一屏幕之间可使用拖放功能,但在iPhone中,仅可在相似屏幕上使用拖放功能。 通过使用CollectionViewDataSource和CollectionViewDelegate方法在同一屏幕上创建带有两个tableView的基础项目。 您可以从此处下载基础项目。 现在,我们开始拖放代理,以将tableView行从FirstTableView移至SecondTableView。 为了回调UITableViewDragDelegate,我们需要在viewDidLoad()方法中设置.dragDelegate 。 覆盖func viewDidLoad(){ super.viewDidLoad() self.topTableView.dragDelegate =自我 } 为了启用拖动吸引力,我们需要设置表格视图的dragInteractionEnabled属性。 在viewDidLoad方法中启用此属性。 此属性的默认值在iPad上为true,在iPhone上为false。 self.topTableView.dragInteractionEnabled = true 在UITableViewDragDelegate中,只有一个必需的方法 itemForBeginning用于支持拖动项。 tableView(_:itemsForBeginning:at 🙂 ->提供项目以开始与给定indexPath相关的拖动。 如果返回一个空数组,则拖动会话将不会开始。 NSItemProvider UIDragItem NSItemProvider- >通过使用此类,您可以创建数据或文件的对象,以便在拖放期间在进程之间传送数据或文件。 UIDragItem- >从一个位置拖动到另一个位置的基础数据项的表示。 扩展ViewController:UITableViewDragDelegate { func tableView(_ tableView:UITableView,itemsForBeginning会话:UIDragSession,在indexPath:IndexPath)-> [UIDragItem] { 让dragItem = self.dragItem(forPhotoAt:indexPath) 返回[dragItem] } ///辅助方法 私人功能dragItem(forPhotoAt indexPath:IndexPath)-> UIDragItem { […]