拖动nscollectionview崩溃

时间:2018-02-28 20:41:11

标签: objective-c nscollectionview

我有一个NSCollectionView显示内部存储的图像(即非文件)。该集合正确显示。但是,当我开始拖动操作时,应用程序崩溃。它在拖动离开集合视图之前崩溃。我正在返回拖动图像的内部图像。崩溃日志显示崩溃发生在拖动代码中。我必须遗漏一些东西,但我找不到它。我的代码基于Apple的样本。

- (BOOL)collectionView:(NSCollectionView *)collectionView canDragItemsAtIndexPaths:(NSSet<NSIndexPath *> *)indexPaths withEvent:(NSEvent *)event
{
    if (indexPaths != nil)
    {
        NSLog(@"1.0");
        return YES;
    }
    else
        return NO;
}

- (id <NSPasteboardWriting>)collectionView:(NSCollectionView *)collectionView pasteboardWriterForItemAtIndexPath:(NSIndexPath *)indexPath
{
    NSLog(@"2");
    NSURL   *testImageURL;
    NSBundle* myBundle = [NSBundle mainBundle];
    NSString* myImagePath = [myBundle pathForResource:@"blue-bridge" ofType:@"png"];
    testImageURL = [NSURL fileURLWithPath:myImagePath];
    //NSURL *anurl = [NSURL URLWithString:@"file:///Users/sysadmin/Downloads/wonderwoman.jpg"] ;

    return testImageURL ;
}

正在调用pasteboardWriterForItemAtIndexPath,然后应用程序崩溃;

crash log

我尝试了不同的内部和外部图像,png和jpeg,因此图像本身似乎不是问题。

建议非常感谢!

1 个答案:

答案 0 :(得分:3)

从堆栈跟踪中我会说它在尝试生成拖动图像时崩溃了。为了确保案例实现-collectionView:draggingImageForItemsAtIndexwithEvent:offset:并返回任何图像,例如系统图像之一:[NSImage imageNamed:NSImageNameFolder]

如果没有崩溃,那么你肯定知道问题出在你的NSCollectionViewItem以及它是如何绘制UI的。分享这些代码,我们可以帮助你。