0

以下代码来自NSTableViewDataSource我试图实现拖放的地方。

谁能告诉我为什么setString:forTypes:下面代码中的方法在NOLeopard 下返回?它在雪豹中运行良好。我检查了“可可的粘贴板编程主题”遗留文档,但我无法弄清楚我做错了什么。

- (BOOL)tableView:(NSTableView *)tableView writeRowsWithIndexes:(NSIndexSet *)rowIndexes toPasteboard:(NSPasteboard *)pboard
{
    NSString *str;
    if ([tableView isEqualTo:databaseView]) {
        str = [[commander databases] objectAtIndex:[rowIndexes firstIndex]];
    } else if ([tableView isEqualTo:favouritesView]) {
        str = [[commander favourites] objectAtIndex:[rowIndexes firstIndex]];
    }

    if (str != nil) {
        NSArray *types = [NSArray arrayWithObject:NSStringPboardType];
        [pboard declareTypes:types owner:nil];
        if ([pboard setString:str forType:NSStringPboardType]) {
            return YES;
        } else {
            [self handleErrorString:[NSString stringWithFormat:@"Error: Couldn't copy '%@' to pasteboard!", str]];
        }
    }
    return NO;
}
4

1 回答 1

1

这是一个疯狂的猜测,但请检查数据:那pboard不是 nil,而那str确实是一个字符串。

于 2010-08-24T03:53:29.930 回答