UIDocumentInteractionController для меню «Открыть в» - не работает - PullRequest
22 голосов
/ 12 ноября 2011

Я реализовал 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:для запуска копирования: и печати: вызовы с использованием меню параметров (в отличие от меню «Открыть»), которое вызывает меню, в котором перечислены только страницы, но это по-прежнему не работает.

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

Ответы [ 3 ]

49 голосов
/ 12 ноября 2011

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

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

16 голосов
/ 07 февраля 2013

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

@property (nonatomic, retain) UIDocumentInteractionController *docController;

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

0 голосов
/ 30 января 2013

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

[interactionController retain];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...