Существует очень похожий вопрос, заданный следующим сообщением: Different data for sharing providers in UIActivityViewController. Но мой вопрос другой.Обмен данными с различными типами в UIActivityViewController
Я знаю, как разделить разные данные одного и того же типа с различными видами деятельности, используя itemForActivityType
. Например:
- (id) activityViewController:(UIActivityViewController *)activityViewController
itemForActivityType:(NSString *)activityType
{
if ([activityType isEqualToString:UIActivityTypePostToTwitter])
return @"This is a #twitter post!";
if ([activityType isEqualToString:UIActivityTypePostToFacebook])
return @"This is a facebook post!";
if ([activityType isEqualToString:UIActivityTypeAirDrop])
return @"Airdrop message text";
else
return nil;
}
Однако мой вопрос: , что если у меня есть разные данные, чтобы поделиться с различными видами деятельности, что я должен делать?. Например, что, если я хотел бы поделиться:
- a string on Twitter;
- массив строк и изображений на Facebook;
- фактические данные изображения (например, NSData) с Airdrop.
P.S .:
Я также посмотрел на следующей функции протокола:
- (id)activityViewControllerPlaceholderItem:;
Однако, я не могу использовать его, потому что мы не знаем значение activityType
здесь.
«Однако в этой функции у меня нет доступа к типу activity». Но, с другой стороны, это только местозаполнитель. Документы (в отличие от заголовков, которые вы цитируете) делают совершенно ясным, что вы можете изменять типы, когда вы попадаете в 'itemForActivityType:'. – matt
@matt, Да, вы правы. Я фактически цитирую описание в файле заголовка. Но я не вижу здесь упоминания о том, что мы можем изменить типы. Могу я указать на это для меня? Я не могу это найти. Кроме того, я попытался, если тип возвращаемого значения не совпадает с типом заполнителя, он не будет работать. –
https://developer.apple.com/library/ios/documentation/uikit/reference/UIActivityItemSource_protocol/index.html#//apple_ref/occ/intfm/UIActivityItemSource/activityViewControllerPlaceholderItem: – matt