我有一个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,然后应用程序崩溃;
我尝试了不同的内部和外部图像,png和jpeg,因此图像本身似乎不是问题。
建议非常感谢!
答案 0 :(得分:3)
从堆栈跟踪中我会说它在尝试生成拖动图像时崩溃了。为了确保案例实现-collectionView:draggingImageForItemsAtIndexwithEvent:offset:并返回任何图像,例如系统图像之一:[NSImage imageNamed:NSImageNameFolder]
如果没有崩溃,那么你肯定知道问题出在你的NSCollectionViewItem以及它是如何绘制UI的。分享这些代码,我们可以帮助你。