Различные элементы действия для отдельных действий действия в UIActivityViewController

Можно ли использовать разные элементы действий для каждого действия в UIActivityViewController? Например, у меня есть следующий код:

NSArray *objectsToShare = @[schemeURL, wordedString];
controller = [[UIActivityViewController alloc] initWithActivityItems:objectsToShare applicationActivities:nil];

// Exclude all activities except AirDrop.
NSArray *excludedActivities = @[UIActivityTypePostToTwitter,
                                    UIActivityTypePostToWeibo,
                                    UIActivityTypeAssignToContact, UIActivityTypeSaveToCameraRoll,
                                    UIActivityTypeAddToReadingList, UIActivityTypePostToFlickr,
                                    UIActivityTypePostToVimeo, UIActivityTypePostToTencentWeibo];
controller.excludedActivityTypes = excludedActivities;
[self presentViewController:controller animated:YES completion:nil];

Я хочу установить данные для отправки в Facebook в свойство wordedString и установить данные для отправки через AirDrop в свойство schemeURL. Это возможно? Заранее спасибо.


person Community    schedule 24.11.2013    source источник
comment
Не могли бы вы подтвердить, сработало ли это для вас?   -  person Bonnke    schedule 06.05.2015


Ответы (1)


Вы можете создать подкласс UIActivityItemProvider, и для проверки типа активности можно использовать следующий метод. Попробуйте.

//- Returns the data object to be acted upon. (required)
- (id)activityViewController:(UIActivityViewController *)activityViewController itemForActivityType:(NSString *)activityType
{
if ([activityType isEqualToString:UIActivityTypePostToFacebook]) {
    NSString *theText = @"Some text for Facebook";
    return theText;
}

if ([activityType isEqualToString:UIActivityTypePostToTwitter]) {
    NSString *theText = @"Some text for Twitter";
    return theText;
}

if ([activityType isEqualToString:UIActivityTypePostToWeibo]) {
    NSString *theText = @"Some text for Weibo";
    return theText;
}

if ([activityType isEqualToString:UIActivityTypeMail]) {
    NSString *theText = _someText;
    return theText;
}

if ([activityType isEqualToString:kYourCustomMailType]) {
    NSString *theText = @"Some text for your Custom Type";
    return theText;
    }

return @"Some default text";

}

person the1pawan    schedule 25.11.2013
comment
Создание подкласса UIActivityItemProvider в первую очередь необходимо, когда вы хотите, чтобы предоставление общего элемента было асинхронным. Если все, что вам нужно, это настроить полезную нагрузку для каждого действия, вам следует вместо этого создать объект, соответствующий протоколу UIActivityItemSource. - person ccjensen; 01.12.2013
comment
@the1pawan Привет, не могли бы вы подтвердить, сработало ли это для вас? - person Bonnke; 06.05.2015