【问题标题】:UIActivityViewController in a PopOverViewController Crashing in SwiftPopOverViewController 中的 UIActivityViewController 在 Swift 中崩溃
【发布时间】:2015-06-16 16:37:58
【问题描述】:

我有一个用于共享按钮的 UIActivityViewController。对于 iPhone,我将它作为常规的 UIActivityViewController,对于 iPad,它在 PopOverViewController 中。这是我的代码

let textToShare = "Check out this website!"

if let myWebsite = NSURL(string: "http://www.apple.com/") {
   let objectsToShare = [textToShare, myWebsite]
   let activityVC = UIActivityViewController(activityItems: objectsToShare, applicationActivities: nil)

   if let popUpVC = activityVC.popoverPresentationController {
      popUpVC.permittedArrowDirections = .Any
      popUpVC.sourceRect = share.frame
   }
   self.view?.window?.rootViewController?.presentViewController(activityVC, animated: true, completion: nil)
}

当我在 iPad 上按下共享按钮时,它会崩溃并显示 (lldb)。但是,当我从视图中看到它时,它可以工作,但位置不正确。这是我目前使用的代码。

popUpVC.sourceView = self.view

【问题讨论】:

    标签: ios xcode ipad uipopovercontroller uiactivityviewcontroller


    【解决方案1】:

    试试这个,你必须检查你当前正在运行的设备是否响应 popoverPresentationController 因为popoverPresentationController 是 iOS 8 的新手,并且会在 iOS 7 上崩溃。它在 iPhone 上也将为零,因为它只在在 iPad 上UIPopover

    let activityViewController = UIActivityViewController(activityItems: [myText, myUrl], applicationActivities: nil)
    
    if activityViewController.respondsToSelector("popoverPresentationController") {
       // iOS8+
       view.presentViewController(activityViewController, animated: true, completion: nil)
       activityViewController.popoverPresentationController?.sourceView = view
    } else {
       view.presentViewController(activityViewController, animated: true, completion: nil)
    }
    

    【讨论】:

    • 我将如何使用 sourceRect 而不是视图,因为我正在使用它并且它会崩溃 activityViewController.popoverPresentationController?.sourceRect = share.frame
    猜你喜欢
    • 2015-06-15
    • 1970-01-01
    • 2014-10-27
    • 2021-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-17
    相关资源
    最近更新 更多