Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //
- // custom action for a specific share types
- //
- class MyCustomShare: NSObject, UIActivityItemSource {
- static func share() {
- let vc = UIViewController.topViewController()
- let activityViewController = UIActivityViewController(activityItems: [self], applicationActivities: nil)
- activityViewController.popoverPresentationController?.sourceView = vc?.view
- vc?.present(activityViewController, animated: true, completion: nil)
- }
- // MARK: - UIActivityItemSource Protocol
- func activityViewController(_ activityViewController: UIActivityViewController, itemForActivityType activityType: UIActivityType?) -> Any? {
- var message: String = "you custom message"
- if activityType == UIActivityType.postToFacebook {
- activityViewController.dismiss(animated: false) {
- // TODO: your custom actions
- }
- return nil
- }
- return message
- }
- func activityViewController(_ activityViewController: UIActivityViewController, subjectForActivityType activityType: UIActivityType?) -> String {
- return "your subject" // form email
- }
- func activityViewController(_ activityViewController: UIActivityViewController, thumbnailImageForActivityType activityType: UIActivityType?, suggestedSize size: CGSize) -> UIImage? {
- var image: UIImage?
- if let imageUlr = "your image url", let url = URL(string: imageUlr) {
- guard let data = try? Data(contentsOf: url) else {
- return nil
- }
- image = UIImage(data: data)
- }
- return image
- }
- func activityViewControllerPlaceholderItem(_ activityViewController: UIActivityViewController) -> Any {
- return ""
- }
- }
- extension UIViewController {
- static var root: UIViewController? {
- get {
- return UIApplication.shared.delegate?.window??.rootViewController
- }
- }
- static func topViewController(from viewController: UIViewController? = UIViewController.root) -> UIViewController? {
- if let tabBarViewController = viewController as? UITabBarController {
- return topViewController(from: tabBarViewController.selectedViewController)
- } else if let navigationController = viewController as? UINavigationController {
- return topViewController(from: navigationController.visibleViewController)
- } else if let presentedViewController = viewController?.presentedViewController {
- return topViewController(from: presentedViewController)
- } else {
- return viewController
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement