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

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

22

3 ответы

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

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

49
добавлено
Thnx. провели пару часов. но забыть о дуге. thnx много еще раз.
добавлено автор Serg Shiyan, источник
Это ответ на проекты ARC. Вы должны объявить свойство для UIDocumentInteractionController: @property (неатомный, сильный) UIDocumentInteractionController * docController;
добавлено автор tony.tc.leung, источник
благодаря! Я долго искал стек, и, наконец, нашел, что этот ответ работает для меня.
добавлено автор huoxinbird, источник

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

@property (nonatomic, retain) UIDocumentInteractionController *docController;

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

16
добавлено

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

[interactionController retain];
4
добавлено
Mobile Dev Jobs — вакансии и аналитика
Mobile Dev Jobs — вакансии и аналитика
6 187 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению iOS, Android, Xamarin и т.д. ВАЖНО: Правила публикации и правила канала: Ссылка – https://telegra.ph/Pravila-oformleniya-vakansij-i-rezyume-11-09-2

iOS Developers — русскоговорящее сообщество
iOS Developers — русскоговорящее сообщество
2 400 участник(ов)

Общаемся на темы, посвященным iOS-разработке, Swift, Objective-C, SDK, Rx, Cocoa и т.д.