###前提・実現したいこと
swiftに関する質問です。UIButtonでボタンを作成し、そのボタンを押すと別のシーンに移るというコードを書きたいのですが、UIButtonのaddTargetメソッドの引数actionで
エラーメッセージ"Argument of '#selector' cannot refer to local function 'present()'"と出ます。このエラーを消したいのですが、どのようにすればいいのでしょうか。
###該当のソースコード
swift
1import UIKit 2import SpriteKit 3import GameplayKit 4 5class GameViewController: UIViewController { 6 7 override func viewDidLoad() { 8 super.viewDidLoad() 9 10 let scene = GameScene()//別のシーン 11 let view = self.view as! SKView 12 13 scene.size = view.frame.size 14 scene.scaleMode = .aspectFill 15 16 view.ignoresSiblingOrder = true 17 view.showsFPS = true 18 view.showsNodeCount = true 19 20 //ボタンの作成 21 let button = UIButton(frame: CGRect(x: self.view.frame.width * 0.5 , 22 y: self.view.frame.height * 0.5 , 23 width: 200.0, 24 height: 50.0)) 25 button.backgroundColor = UIColor.red 26 button.layer.masksToBounds = true 27 button.layer.cornerRadius = 20.0 28 button.setTitle("Button", for: .normal) 29 button.setTitleColor(UIColor.blue, for: .normal) 30 view.addSubview(button) 31 32 func present(){ 33 view.presentScene(scene) 34 } 35 36 button.addTarget(self, action: #selector(present), for: .touchUpInside)//ここのactionでエラーが発生 37 38 } 39 40 41 42 override var shouldAutorotate: Bool { 43 return true 44 } 45 46 override var supportedInterfaceOrientations: UIInterfaceOrientationMask { 47 if UIDevice.current.userInterfaceIdiom == .phone { 48 return .allButUpsideDown 49 } else { 50 return .all 51 } 52 } 53 54 override func didReceiveMemoryWarning() { 55 super.didReceiveMemoryWarning() 56 // Release any cached data, images, etc that aren't in use. 57 } 58 59 override var prefersStatusBarHidden: Bool { 60 return true 61 } 62} 63
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/03/31 12:13
2017/03/31 12:26
2017/03/31 12:36
2017/03/31 12:41
2017/03/31 13:33
2017/03/31 13:37 編集
2017/03/31 13:37
2017/03/31 13:38
2017/03/31 13:40
2017/03/31 13:44
2017/03/31 13:52