Вы должны воспользоваться протоколом UIActivityItemSource
. Параметр activityItems
инициализатора UIActivityViewController
принимает либо массив объектов данных, либо массив объектов, реализующих протокол UIActivityItemSource
.
В качестве примера рассмотрим источник товара, например, следующий.
class MyStringItemSource: NSObject, UIActivityItemSource {
@objc func activityViewControllerPlaceholderItem(activityViewController: UIActivityViewController) -> AnyObject {
return ""
}
@objc func activityViewController(activityViewController: UIActivityViewController, itemForActivityType activityType: String) -> AnyObject? {
if activityType == UIActivityTypeMessage {
return "String for message"
} else if activityType == UIActivityTypeMail {
return "String for mail"
} else if activityType == UIActivityTypePostToTwitter {
return "String for twitter"
} else if activityType == UIActivityTypePostToFacebook {
return "String for facebook"
}
return nil
}
func activityViewController(activityViewController: UIActivityViewController, subjectForActivityType activityType: String?) -> String {
if activityType == UIActivityTypeMessage {
return "Subject for message"
} else if activityType == UIActivityTypeMail {
return "Subject for mail"
} else if activityType == UIActivityTypePostToTwitter {
return "Subject for twitter"
} else if activityType == UIActivityTypePostToFacebook {
return "Subject for facebook"
}
return ""
}
func activityViewController(activityViewController: UIActivityViewController, thumbnailImageForActivityType activityType: String!, suggestedSize size: CGSize) -> UIImage! {
if activityType == UIActivityTypeMessage {
return UIImage(named: "thumbnail-for-message")
} else if activityType == UIActivityTypeMail {
return UIImage(named: "thumbnail-for-mail")
} else if activityType == UIActivityTypePostToTwitter {
return UIImage(named: "thumbnail-for-twitter")
} else if activityType == UIActivityTypePostToFacebook {
return UIImage(named: "thumbnail-for-facebook")
}
return UIImage(named: "some-default-thumbnail")
}
}
Вышеупомянутый источник предметов возвращает различные объекты данных, предметы и миниатюрные объекты, основанные на типе деятельности. Для использования вам просто нужно передать его в инициализатор UIActivityViewController
.
UIActivityViewController(activityItems: [MyStringItemSource()], applicationActivities: nil)
Аналогично, можно определить пользовательский MyUrlItemSource
класс, который возвращает различные URL-адреса на основе выбранной деятельности и передать его в инициализаторе.
UIActivityViewController(activityItems: [MyStringItemSource(), MyUrlItemSource()], applicationActivities: nil)
Все это описано в официальной документации по UIActivityViewController
и UIActivityItemSource
Большое спасибо! – Bonnke
Хороший человек, приятный прикосновение! –
этот код доступен для объектива-c? –