2017-08-29 27 views
1

ドラッグアンドドロップについては、UIDドキュメントの処理方法を除いてすべてが明確です。これは私の(動作しない)実装ですiOS 11ドラッグアンドドロップUIDドキュメント

...ドラッグについては

ドロップのために
func tableView(_ tableView: UITableView, itemsForBeginning session: UIDragSession, at indexPath: IndexPath) -> [UIDragItem] { 

    let doc = DataManager.shared.storage[indexPath.row] // the UIDocument to drag 
    let itemProv = NSItemProvider() 
    itemProv.registerFileRepresentation(forTypeIdentifier: "com.mybundle.myapp.myextension", 
             fileOptions: [.openInPlace], 
             visibility: .all) { completionHandler in 

     completionHandler(doc.fileURL, true, nil) 
     return nil 
    } 

    // DragItem 
    let item = UIDragItem(itemProvider: itemProv) 

    return [item] 
} 

func tableView(_ tableView: UITableView, performDropWith coordinator: UITableViewDropCoordinator) { 

    for item in coordinator.session.items { 
     item.itemProvider.loadFileRepresentation(forTypeIdentifier: "com.mybundle.myapp.myextension", completionHandler: { (url, error) in 

      if let docUrlOk = url { 
       debugPrint(urlOk.absoluteString) 
       DataManager.shared.load(docUrlOk) 
      } 
     }) 
    } 
} 

および更新方法:

func tableView(_ tableView: UITableView, dropSessionDidUpdate session: UIDropSession, withDestinationIndexPath destinationIndexPath: IndexPath?) -> UITableViewDropProposal { 

    if tableView.hasActiveDrag { 
     if session.items.count > 1 { 
      return UITableViewDropProposal(operation: .cancel) 
     } else { 
      return UITableViewDropProposal(operation: .move, intent: .insertAtDestinationIndexPath) 
     } 
    } else { 
     return UITableViewDropProposal(operation: .copy, intent: .insertAtDestinationIndexPath) 
    } 
} 

ありがとうございました

答えて

0

iPhoneでコードを実行する場合は、dragItem.enable = YESと設定する必要があります。

+0

dragItemとは何ですか?これはUIDragItemインスタンスです。はいいいえ.enableプロパティがありません.... – Enlil

+0

申し訳ありませんが、私はUIDragInteraction – Kingandyoga

+0

のebableプロパティを有効にしています:tableView.dragDelegate = self - tableView.dropDelegate = self - tableView.dragInteractionEnabled = true – Enlil