#ios #objective-c #cocoa
#iOS #objective-c #какао
Вопрос:
Я пытаюсь скопировать данные NSTableView с помощью pasteboard и хочу вставить их в виде таблицы в Microsoft Word. Как мне это сделать?
Я попытался скопировать источник данных TableView в виде строки, но не смог скопировать сам TableView.
NSPasteboard *pasteboard=[NSPasteboard generalPasteboard];
//_fillvalue,_levelfill(Mutable array) are the data source for my tableview with 2 column
[pasteboard clearContents];
int i=0;
NSMutableArray *tval=[[NSMutableArray alloc]init];
NSInteger row=[_tableView numberOfRows];
for(i=0;i<(int)row;i ){
NSString *s1=[_levelfill objectAtIndex:i]; //levelfill is datasource array
NSLog(@"s1 value is %@",s1);
NSString *s2=[_fillvalue objectAtIndex:i];
s1=[s1 stringByAppendingString:@" "];
s1=[s1 stringByAppendingString:s2];
[tval addObject:s1];
}
[pasteboard writeObjects:tval];
Я ожидаю, что выходные данные будут скопированы из tableview, а не из источника данных tableview. Также есть ли способ скопировать как саму таблицу, которую можно вставить как таблицу непосредственно в Microsoft Word.
Ответ №1:
Вы должны сделать что-то вроде этого
NSPasteboard *pasteboard = [NSPasteboard generalPasteboard];
[pasteboard clearContents];
NSMutableArray *tval = [[NSMutableArray alloc]init];
//This is the equivalent of your for
[_levelfill enumerateObjectsUsingBlock:^(NSString *object, NSUInteger idx, BOOL *stop) {
NSLog(@"_levelfill value is %@", object);
NSString *s2 = [_fillvalue objectAtIndex:idx];
NSString *s1 = object;
s1 = [s1 stringByAppendingString:@" "];
s1 = [s1 stringByAppendingString:s2];
// Create the string representing the row and add it to the array
[tval addObject:s1];
}];
// Set the string in the pasteboard
[pasteboard declareTypes:[NSArray arrayWithObject:NSPasteboardTypeString] owner:nil];
[pasteboard setString:[tval componentsJoinedByString:@"n"] forType:NSPasteboardTypeString];