【问题标题】:Can't access property sourceIndexPath on UIDragItem无法访问 UIDragItem 上的属性 sourceIndexPath
【发布时间】:2020-01-29 10:35:55
【问题描述】:

我正在创建一个包含两个独立 UICollectionView 的视图控制器。我允许将单元格从一个 UICollectionView 拖到另一个。 在方法中

-(void)collectionView:(UICollectionView *)collectionView performDropWithCoordinator:(id<UICollectionViewDropCoordinator>)coordinator;

我得到这样的拖动项目

UIDragItem *item = [coordinator.items objectAtIndex:0];

要确定拖动是否来自同一个 UICollectionView,我想检查 itemobject 上的属性 sourceIndexPath,如 https://developer.apple.com/documentation/uikit/uicollectionviewdropitem/2897392-sourceindexpath?language=objc 中所述 不幸的是,Xcode 一直告诉我Property 'sourceIndexPath' not found on object of type 'UIDragItem *' 当我打印出item时,我清楚地看到该属性可用,这里的nil值无关紧要,它表示拖动源。

<_UICollectionViewDropItem:0x60000189a760 previewSize = {50, 50}; sourceIndexPath = (nil); dragItem = <_UIDropItem: 0x60000240a0a0>>

我真的被困在了这里,感觉好像我忘记了实现某些协议,但是检查了两次三次,一切似乎都很好。谢谢!

【问题讨论】:

    标签: ios objective-c drag-and-drop


    【解决方案1】:

    请尝试https://cocoapods.org/pods/DragDropiOS这对你有帮助。

    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
            let model = collectionModels[indexPath.item]
    
            let cell = collectionView.dequeueReusableCell(withReuseIdentifier: DragDropCollectionViewCell.IDENTIFIER, for: indexPath) as! DragDropCollectionViewCell
    
            cell.updateData(model)
    
            return cell
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-19
      • 2016-06-05
      • 2013-05-20
      • 2018-04-24
      • 2017-04-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多