Наконец, это было сделано через Apple (довольно мрачную) документацию по новому классу UIActivityViewController
и UIActivityItemSource
, и я пытаюсь отправить разные наборы данных для разных действий, вызванных из вида активности. Чтобы упростить вещи, я смотрю на две вещи.
- Аккаунт Facebook, который должен сказать "Проверьте это!". и также прикрепите URL-адрес к сообщению (с этой симпатичной маленькой скрепкой).
- Аккаунт в Twitter, который должен сказать "Проверьте это, С#hashtag!" а также прикрепить тот же URL (с тем же скрепкой).
Вот код, который я сейчас применил.
- (id)activityViewController:(UIActivityViewController *)activityViewController itemForActivityType:(NSString *)activityType {
if ([activityType isEqualToString:UIActivityTypePostToFacebook]) {
return @"Check this out!";
} else if ([activityType isEqualToString:UIActivityTypePostToTwitter]) {
return @"Check this out, with #hashtag!";
}
return @"";
}
- (id)activityViewControllerPlaceholderItem:(UIActivityViewController *)activityViewController {
return @"";
}
И затем, когда я настроил этот контроллер представления активности (он в том же классе), это то, что я делаю.
UIActivityViewController *activityView = [[UIActivityViewController alloc] initWithActivityItems:@[self] applicationActivities:nil];
[self presentViewController:activityView animated:YES completion:nil];
Моя дилемма , как прикрепить этот объект NSURL
.. Это относительно легко при вызове модальности публикации класса iOS 6 SL; вы просто вызываете отдельные методы для присоединения URL-адреса или изображения. Как мне это сделать здесь?
Я хочу заметить, что вместо того, чтобы возвращать NSString
объекты из -activityViewController:itemForActivityType
, если я возвращаю только объекты NSURL
, они отображаются с этой скрепкой, без текстового текста в сообщении. Если я возвращу массив из этих двух элементов, ничего не появится вообще.