如何使用Xamarin中的nsDragginInfo.EnumerateDraggingItems?
我正在实现NSTableView行拖放。我正在使用这里的示例 当我在表中拖动一行时,数据源方法被调用,这实际上进展得相当顺利。但是,我在使用Xamarin中的NSDraggingInfo.EnumerateDraggingItems方法时遇到问题 Swift代码示例如下:如何使用Xamarin中的nsDragginInfo.EnumerateDraggingItems?,xamarin,cocoa,xamarin.mac,xamarin-binding,Xamarin,Cocoa,Xamarin.mac,Xamarin Binding,我正在实现NSTableView行拖放。我正在使用这里的示例 当我在表中拖动一行时,数据源方法被调用,这实际上进展得相当顺利。但是,我在使用Xamarin中的NSDraggingInfo.EnumerateDraggingItems方法时遇到问题 Swift代码示例如下: info.enumerateDraggingItemsWithOptions([], forView: tableView, classes: [NSPasteboardItem.self], searchOptions: [
info.enumerateDraggingItemsWithOptions([], forView: tableView, classes: [NSPasteboardItem.self], searchOptions: [:]) {
if let str = ($0.0.item as! NSPasteboardItem).stringForType("public.data"), index = Int(str) {
oldIndexes.append(index)
}
}
我遇到的问题是类:[NSPasteboardItem.self]
Xamarin方法的特征为:
EnumerateDraggingItems(NSDraggingItemEnumerationOptions, NSView, NSPasteboardReading[], NSDictionary, NSDraggingEnumerator)
EnumerateDraggingItems(NSDraggingItemEnumerationOptions, NSView, NSArray, NSDictionary, NSDraggingEnumerator)
EnumerateDraggingItems(NSDraggingItemEnumerationOptions, NSView, IntPtr, NSDictionary, NSDraggingEnumerator)
如何为
classes
参数提供所需的参数?似乎xamarin版本不正确(查看github上的源代码):
因为classes参数应该是类定义的数组,而不是实例。
使用此版本
EnumerateDraggingItems(NSDraggingItemEnumerationOptions, NSView, NSArray, NSDictionary, NSDraggingEnumerator)
类数组可以这样创建:
var classesArray = NSArray.FromIntPtrs(new IntPtr[] {
ObjCRuntime.Class.GetHandle(typeof(NSPasteboardItem))
});
尚未对此进行测试。似乎xamarin版本不正确(查看github上的源代码): 因为classes参数应该是类定义的数组,而不是实例。 使用此版本
EnumerateDraggingItems(NSDraggingItemEnumerationOptions, NSView, NSArray, NSDictionary, NSDraggingEnumerator)
类数组可以这样创建:
var classesArray = NSArray.FromIntPtrs(new IntPtr[] {
ObjCRuntime.Class.GetHandle(typeof(NSPasteboardItem))
});
我还没有测试过这个