2009-06-23 25 views
9

Tôi gặp phải một số sự cố khi cố gắng đặt nhiều hơn một biểu diễn dữ liệu lên bảng mẫu trên iPhone 3.0.Sao chép và dán trên iPhone với nhiều biểu diễn dữ liệu

Những gì tôi đang cố gắng làm là đặt một biểu diễn dữ liệu và biểu diễn chuỗi trên bảng. Dữ liệu là kiểu dữ liệu của riêng tôi và tôi sử dụng nó để sao chép và dán vào ứng dụng của mình. Biểu diễn chuỗi là một cách để sao chép và dán nội dung của ứng dụng của tôi dưới dạng đường viền vào một ứng dụng khác (ví dụ: Mail.app).

// payload 
NSString *pasteboardString = [selectedNode stringRepresentation]; 
NSDictionary *pasteboardDictionary = [selectedNode nodeAndSubnodesProperties]; 

// set payload 
UIPasteboard *pasteboard = [UIPasteboard generalPasteboard]; 
pasteboard.string = pasteboardString; 
[pasteboard setValue:pasteboardDictionary forPasteboardType:MNTNodesPasteboardType]; 

Mã trên không hoạt động vì thuộc tính chuỗi và setValue: forPasteboardType: methode thay thế biểu diễn đầu tiên trên bảng. Tôi đã thử addItems: nhưng nó không làm việc cho tôi.

Cảm ơn bạn đã được trợ giúp!

Trả lời

15

Để trả lời câu hỏi của riêng tôi:

Bạn phải sử dụng các mục tài sản để đưa nhiều đại diện vào các tông. Để làm như vậy bạn tạo một từ điển với mỗi biểu diễn dưới dạng giá trị và kiểu biểu diễn làm khóa. Thêm từ điển này vào một mảng, trong đó mỗi mục trong mảng đại diện cho một mục (UIPasteboard hỗ trợ thêm nhiều mục vào pasteboard cũng như thêm biểu diễn mutliple cho mỗi mục).

Ví dụ mã cho một mục duy nhất với hai đại diện:

UIPasteboard *pasteboard = [UIPasteboard generalPasteboard]; 
NSMutableDictionary *item = [NSMutableDictionary dictionaryWithCapacity:2]; 
[item setValue:[NSKeyedArchiver archivedDataWithRootObject:pasteboardDictionary] forKey:MNTNodesPasteboardType]; 
[item setValue:pasteboardString forKey:(NSString *)kUTTypeUTF8PlainText]; 
pasteboard.items = [NSArray arrayWithObject:item]; 

Đừng quên để liên kết với các khuôn khổ MobileCoreServices để giải quyết hằng UTI.

-1

đây là những gì làm việc cho tôi trong Swift nó dán cả một hình ảnh và văn bản với nhau để các pastboard

let pastebaord = UIPasteboard.generalPasteboard() 
let image = UIImage(named: "my-image-file") 
pastebaord.addItems([ [UIPasteboardTypeListString[0] as! String : "hello"], [UIPasteboardTypeListImage[0] as! String: image!]]) 
Các vấn đề liên quan