你应该利用
UIActivityItemSource
协议。
UIActivityViewController
初始化器的
activityItems
参数可接受数据对象数组或实现
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 中详细说明。
delegate = self
。 - Mohammad Zaid PathanURL
而不是一个String
。 - hennes