2013-05-23 1 views
1

을 파인더 NSCollectionView 형태로 항목을 드래그 할 때 드래그 대상 URL을 얻을, 그래서 나는 다음과 같은 위임 구현하는 방법 :나는 내가 찾기에 NSCollectionViewItem을 드래그 할 때 파인더 파일을 복사하는 기능을 개발하고

- (BOOL)collectionView:(NSCollectionView *)cv writeItemsAtIndexes:(NSIndexSet *)indexes toPasteboard:(NSPasteboard *)pasteboard 
{ 

    NSMutableArray *urls = [NSMutableArray array]; 
    [indexes enumerateIndexesUsingBlock:^(NSUInteger idx, BOOL *stop) 
    { 
     NSDictionary *dictionary = [[cv content] objectAtIndex:idx]; 
     [urls addObject:[dictionary objectForKey:KEY_URL]]; 
    }]; 

    if ([urls count] > 0) 
    { 
     [pasteboard clearContents]; 
     BOOL result = [pasteboard writeObjects:urls]; 
     return result; 
    } 
    return NO; 
} 

또는이 방법 :

- (BOOL)collectionView:(NSCollectionView *)cv writeItemsAtIndexes:(NSIndexSet *)indexes toPasteboard:(NSPasteboard *)pasteboard 
{ 

    NSMutableArray *urls = [NSMutableArray array]; 
    [indexes enumerateIndexesUsingBlock:^(NSUInteger idx, BOOL *stop) 
    { 
     NSDictionary *dictionary = [[cv content] objectAtIndex:idx]; 
     [urls addObject:[[dictionary objectForKey:KEY_URL] path]]; 
    }]; 

    [pasteboard declareTypes:@[NSFilenamesPboardType] owner:self]; 
    [pasteboard setPropertyList:urls forType:NSFilenamesPboardType]; 

    return YES; 
} 

둘 다 정상적으로 작동합니다.

이제 다른 기능에 대한 끌기 대상 URL을 얻고 싶습니다. 아무도 나를 해결할 수 있습니까?

답변

0

당신이 시도 할 수 :

- (BOOL) collectionView : (NSCollectionView *) 이력서 writeItemsAtIndexes : (NSIndexSet *) 인덱스 toPasteboard : (NSPasteboard *) {

NSMutableArray *urls = [NSMutableArray array]; 
[indexes enumerateIndexesUsingBlock:^(NSUInteger idx, BOOL *stop) 
{ 
    NSDictionary *dictionary = [[cv content] objectAtIndex:idx]; 
    [urls addObject:[[dictionary objectForKey:KEY_URL] path]]; 
}]; 

[pasteboard clearContents]; 

return [pasteboard writeObjects:urls]; 

}

을 판지
관련 문제