Подтвердить что ты не робот

UIDocumentInteractionController для меню "Открыть" - не работает

Я применил UIDocumentInteractionController для отправки файлов в другие приложения. Файл является .txt файлом.

Здесь код:

UIDocumentInteractionController *interactionController = [[UIDocumentInteractionController alloc] init];
[interactionController setURL:[NSURL fileURLWithPath:filePath]];
[interactionController setUTI:@"public.text"];
[interactionController setDelegate:self];
[interactionController presentOpenInMenuFromBarButtonItem:actionBarButtonItem animated:YES];

Меню открывается отлично, показывая приложения, такие как Pages, Dropbox и т.д., как я ожидаю. Но когда я нажимаю один из них, меню "Открыть" отменяется и никаких действий не выполняется (файл не отправляется, и целевое приложение никогда не открывается.

Я попытался реализовать методы делегата documentInteractionController:canPerformAction: и documentInteractionController:performAction: для запуска копирования: и печать: вызовы с использованием меню опций (в отличие от открытого в меню), и это привело к тому, что меню было только с перечисленными страницами, но это все еще не работает.

Как это можно решить?

4b9b3361

Ответ 1

Я нашел ответ, и это управление памятью. Я создаю UIDocumentInteractionController, а затем представляю его, но у меня нет его как переменной экземпляра. ARC освобождает его, прежде чем он сможет что-либо сделать. Это включает отправку документа во внешнее приложение.

Эта ошибка не появлялась на iPhone, но на iPad она дает ошибку, потому что архитектура popover работает по-другому, и в итоге она пытается извлечь ее, когда она освобождена. Это то, что предупредило меня об ошибке.

Ответ 2

Эта ошибка также появляется на iPhone/iPod. Просто установите:

@property (nonatomic, retain) UIDocumentInteractionController *docController;

и он будет сохранен, и документ будет передан новому приложению.

Ответ 3

достаточно добавить следующий код:

[interactionController retain];