私が直面している問題で頭を抱えようとしています。私はボタンを押して共有シートを介してURLを共有したい。ここでは、私がこれまで持っているものです:Value of type 'SideMenu' has no member 'presentViewController'
:私は次のエラーを与えたUIViewから共有シートを呼び出す
import UIKit
class SideMenu: 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.presentViewController(activityViewController, animated: true, completion: nil)
}
}
。私はpresentViewController UIViewcontrollerのコンポーネントであり、私はUIViewから呼び出すので、上記が動作しないと思う。
はので、代わりに私がのUIViewControllerを呼び出そうとし、次のことを試してみました:
import UIKit
class SideMenu: UIView {
//share app
@IBAction func shareAppBtn(sender: AnyObject, viewController : UIViewController) -> Void
{
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)
viewController.presentViewController(activityViewController, animated: true, completion: nil)
}
}
をしかし、上記の私に与えた次のエラー:unrecognized selector sent to instance 0x7fe93acb6720'
を。
だから私は最終的にしてみました:
import UIKit
class SideMenu: 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)
}
}
しかし、上記の私に次のエラーが発生しました:
Warning: Attempt to present <UIActivityViewController: 0x7fe03e04c600> on <RAMAnimatedTabBarController.RAMAnimatedTabBarController: 0x7fe03bc4a170> which is already presenting <SideMenu.UISideMenuNavigationController: 0x7fe03c094200>
は、私がここで何をしないのですか?私はUIView上でシェアシートを呼びたい。
ありがとうございました。
'@ IBAction'メソッドの関数シグネチャを変更することはできません。あなたの問題は、このコードはおそらく 'UIView'に属していないということです。委譲パターンを使用して、タップ・イベントを包含ビュー・コントローラーに渡すか、または含まれているビュー・コントローラーにUIViewのプロパティーへの参照を設定させて、 – Paulw11
上の 'presentViewController'を呼び出すオブジェクトを知ることができます'UIActivityViewcontroller'を表示する前に遅延を与えてみてください。エラーはこれを意味するようです。 – Gokul