UIView 中的 Swift 共享表
Posted
技术标签:
【中文标题】UIView 中的 Swift 共享表【英文标题】:Swift Share sheet in UIView 【发布时间】:2016-08-31 15:24:15 【问题描述】:我有一个 UIView 类,想分享一个 URL 链接,在 UIView 中添加分享表的正确方法是什么?
我当前的代码正在尝试通过单击按钮来调用共享表:
//share app
@IBAction func shareAppBtn(sender: AnyObject )
print("shareAppBtn tapped")
let myWebsite = NSURL(string:"http://www.google.com/")
guard let url = myWebsite else
print("nothing found")
return
let shareItems:Array = [url]
let activityViewController:UIActivityViewController = UIActivityViewController(activityItems: shareItems, applicationActivities: nil)
self.window?.rootViewController!.presentViewController(activityViewController, animated: true, completion: nil)
我尝试使用当前 UIView 的根视图但收到错误:
Warning: Attempt to present <UIActivityViewController: on <RAMAnimatedTabBarController.RAMAnimatedTabBarController: which is already presenting <SideMenu.UISideMenuNavigationController: Attempting to load the view of a view controller while it is deallocating is not allowed and may result in undefined behavior (<UIAlertController:)
谢谢。
【问题讨论】:
你为什么在 rootViewController 上调用presentViewController
?尝试不使用self.window?.rootViewController!.
我最初确实尝试过,但是由于我是从 UIView 调用它,所以这给了我一个错误,错误是:Use of unresolved identifier 'presentViewController'
你必须在 viewController 上调用它,是的。你的按钮和你的 UIView 以及以某种方式在 viewController 中?
我的按钮在 UIView 内,由于某些原因它不能在 viewController 内。
也许这个帖子可以帮助你:***.com/questions/15622736/…
【参考方案1】:
您不会在 UIView 中添加共享表。共享表是一个视图控制器,因此它总是需要另一个视图控制器来提供展示的上下文。
您已通过使用当前视图的根视图来完成此操作,该视图已呈现导航控制器UISideMenuNavigationController
。
尝试从该上下文中呈现:
sideMenuNavigationController.presentViewController(activityViewController, animated: true, completion: nil)
【讨论】:
谢谢你,但不幸的是这没有用,我收到Use of unresolved identifier 'sideMenuNavigationController'
错误。我想我得到了无法调用共享表的概念,因为我在 UIView 中,如果它是另一个视图控制器,这会更容易。
请检查导航控制器在代码中的实际命名方式。这只是来自您的错误消息上下文的猜测。
啊,我的错,试图调用具有SideMenu
类的根视图的导航控制器是UISideMenuNavigationController
,但是我也遇到了同样的错误:Use of unresolved identifier 'UISideMenuNavigationController'
在您的视图层次结构中的某处,有一个 UISideMenuNavigationController 似乎位于视图层次结构的顶部。您可以尝试从该视图控制器中找到它并呈现吗?
UISideMenuNavigationController
是我在 Story Board 中创建的导航控制器,它具有 SideMenu
的根视图,如何在我的 SideMenu
UIView 中显示此导航控制器?以上是关于UIView 中的 Swift 共享表的主要内容,如果未能解决你的问题,请参考以下文章
Swift3 和 Segue:两个不同的 UITableViewController 指向一个 UIView