2013-03-12 30 views
10

ứng dụng của tôi tạo một tệp đơn giản có tên là log.txtChia sẻ tệp/gửi tệp trong ứng dụng khác ("mở trong" trong iOS)

URL của tệp này (xem trong xcode) là tệp: // localhost/var/mobile/Applications/số đơn /Documents/log.txt

Vì vậy, tôi có thể thấy tập tin này trong công cụ tìm ...

tôi muốn thêm "mở" tính năng để tôi ứng dụng để cung cấp cho người dùng chia sẻ tệp này (qua thư hoặc imessage) hoặc mở tệp này trong một ứng dụng tương thích khác.

Dưới đây là những gì tôi làm:

-(void) openDocumentIn { 

NSURL *fileURL = [[NSURL alloc] initFileURLWithPath:docFile]; //docFile is the path 
//NSLog(@"%@",fileURL); // -> shows the URL in the xcode log window 

UIDocumentInteractionController *documentController = [UIDocumentInteractionController interactionControllerWithURL:fileURL]; 
documentController.delegate = self; 
documentController.UTI = @"public.text"; 
[documentController presentOpenInMenuFromRect:CGRectZero 
             inView:self.view 
            animated:YES]; 
} 

Sau đó, các cuộc gọi đến chức năng này:

-(IBAction)share:(id)sender { 
    [self openDocumentIn]; 
} 

Khi tôi chạy ứng dụng, tôi bấm vào nút này "chia sẻ", nhưng không gắn trừ hiển thị cho tôi đường dẫn của URL trong cửa sổ đăng nhập ...

tôi đã bỏ lỡ một cái gì đó ...

Cảm ơn

EDIT: cuối cùng, nó hoạt động trên iphone thực của tôi ... không có trình xem văn bản nào trong trình mô phỏng !!! -'

EDIT 2: nó cho thấy các ứng dụng có sẵn (trang, bump ...) nhưng tai nạn cuối cùng: (((see here for the crash picture

+0

Bạn có chắc chắn rằng có một ứng dụng được cài đặt trên thiết bị của bạn có thể mở loại tệp này? –

+0

xem chỉnh sửa và chỉnh sửa 2 trong bài đăng của tôi –

+0

Mở Trình hướng dẫn Breakpoint, nhấp vào dấu + ở góc dưới bên phải, Thêm Điểm dừng Ngoại lệ, Xong. Chạy lại ứng dụng và bây giờ trình gỡ lỗi sẽ dừng lại khi ngoại lệ được ném. –

Trả lời

0

Sau đây là cách nó hoạt động cho tôi:

! tôi chỉ đưa tờ khai "UIDocumentInteractionController * documentController" trong file .h và nó hoạt động!

tôi thật sự không biết tại sao, nhưng ....

+2

@fzaziz đã viết câu trả lời đúng .. bạn nên đánh dấu nó là đã chấp nhận –

41

của nó là một vấn đề quản lý bộ nhớ. lý do chính nó sự cố là vì đối tượng không giữ lại. Đó là lý do tại sao nếu bạn khai báo nó trong tệp .h và viết một @property để giữ lại khi bạn gán nó thì đối tượng sẽ được giữ lại.

Vì vậy, trong tập tin giao diện của bạn (.h), bạn nên có

@property (retain)UIDocumentInteractionController *documentController; 

Sau đó, trong .m (file thực thi) của bạn, bạn có thể làm

@synthesize documentController; 

- (void)openDocumentIn{ 

    // Some code here 

    self.documentController = [UIDocumentInteractionController interactionControllerWithURL:fileURL]; 
     documentController.delegate = self; 
    documentController.UTI = @"public.text"; 
    [documentController presentOpenInMenuFromRect:CGRectZero 
            inView:self.view 
           animated:YES]; 
    // Some more stuff 
} 
+1

Điều này đã khắc phục sự cố cho tôi. Nên là câu trả lời được chấp nhận. –

+0

Có, cảm ơn, điều này đã làm nó !! –

+0

Bất kỳ ý tưởng nào về câu hỏi của tôi. http://stackoverflow.com/questions/30613645/add-edit-in-exel-or-edit-photo-extension – Durgaprasad

Các vấn đề liên quan