Рассказ:
Я хочу представить контроллер вида деятельности либо с массивом строк и URL, либо с массивом строк и UIImages. Первый массив, состоящий из комбинации строк и URL-адресов, отлично работает для большинства приложений, таких как Facebook, Twitter, iMessage и AirDrop. Единственная проблема в том, что приложение LINE (корейское чат-приложение, которое очень популярно в Японии) не принимает URL-адреса. Это должен быть массив NSString и UIImage. Кто-нибудь знает, как это можно сделать?
Длинная история:
Я представляю контроллер представления активности, чтобы поделиться комбинацией строки, изображения и видео через приложения, такие как Facebook, Twitter, Сообщение. Чтобы иметь возможность AirDrop, я отправляю контроллеру представления массив URL, который работает отлично. Все, что мне нужно сделать, это подготовить изображения и видео как временные файлы и отправить их пути.
Приведенный ниже код запускается на PageViewController, кнопка панели инструментов которого появляется над контроллером представления активности.
-(void) sharePreparedItems {
NSArray *sharedItems = [((MasterViewController*)[self.viewControllers objectAtIndex:0]) sharedItems];
BOOL isSharingAsset = [((MasterViewController*)[self.viewControllers objectAtIndex:0]) isSharingAsset];
if (sharedItems != nil) {
UIActivityViewController *activityViewController = [[UIActivityViewController alloc]initWithActivityItems:sharedItems applicationActivities:nil];
activityViewController.completionWithItemsHandler = ^(NSString *activityType, BOOL completed, NSArray *returnedItems, NSError *activityError) {
if (isSharingAsset) {
[[NSNotificationCenter defaultCenter]postNotificationName:@"removeTemporaryMediaFiles" object:self];
}
};
// Popover
self.popoverPresentation = activityViewController.popoverPresentationController;
[self.popoverPresentation setBarButtonItem:self.shareBarButtonItem];
[self.popoverPresentation setPermittedArrowDirections:UIPopoverArrowDirectionDown];
[self.popoverPresentation setDelegate:self];
[self presentViewController:activityViewController animated:YES completion:nil];
}
}
После представления контроллера представления MasterViewController подготавливает NSArray * sharedItems, уведомляет родительский контроллер представления и запускает этот метод. Нет проблем.
Проблема только в том, что приложение LINE не может обмениваться изображениями или видео таким образом. Очевидно, он не берет URL-адреса, и я должен передать ему UIImages. И я определенно не хочу иметь отдельную кнопку только для приложения.
Я думаю, что возможным решением было бы создание пользовательского класса, который принимает два массива и отправляет только один в выбранное приложение.
Я прочитал этот , ответ которого привел меня к этому , и я понимаю, что этот настроенный контроллер 'RDActivityViewController' возвращает массив на основе выбранного приложения. Но я не понимаю, как или если он может выбрать один из двух разных наборов массивов.