質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

323閲覧

ボタンのaddtargetでのエラー

aaaaaachannel

総合スコア37

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2018/04/12 09:38

あるviewcontrollerからボタンによって2種類の追加したviewcontrollerに遷移したいです。そこで以下のコードを書きました。

func

1 let viewHeight = self.view.frame.height 2 let viewWidth = self.view.frame.width 3 let margin = viewHeight/5 4 var tab:UIButton! 5 var tabs:[UIButton] = [] 6 7 for i in 0..<3{ 8 //画像 9 tab = UIButton() 10 tab.frame = CGRect(x: CGFloat(i)*viewWidth/3, y: margin/2,width:viewWidth/3,height:margin/2) 11 tab.layer.borderColor = UIColor(red: 0.7, green: 0.2, blue: 0.2, alpha: 1.0).cgColor 12 tab.layer.borderWidth = 2.0 13 tab.tag = i 14 print(tab.tag) 15 self.view.addSubview(tab) 16 tabs.append(tab) 17 18 switch tab.tag { 19 case 0: 20 tabs[0].setTitle("Standard", for: .normal) 21 tab.backgroundColor = UIColor(red: 0.7, green: 0.2, blue: 0.2, alpha: 1.0) 22 case 1: 23 tabs[1].setTitle("Trap", for: .normal) 24 tab.backgroundColor = UIColor.gray 25 tabs[1].addTarget(self, action: #selector(RankingViewController.goTrap()), for: .touchUpInside) 26 default: 27 tabs[2].setTitle("Endless", for: .normal) 28 tab.backgroundColor = UIColor.gray 29 tabs[2].addTarget(self, action: #selector(RankingViewController.goEndless()), for: .touchUpInside) 30 } 31 } 32 33 34 35 } 36 37 @objc func goTrap(){ 38 let nextvc = TrapRankViewController() 39 nextvc.view.backgroundColor = UIColor.blue 40 self.present(nextvc, animated: true, completion: nil) 41 42 } 43 44 @objc func goEndless(){ 45 let nextvc = EndlessRankViewController() 46 nextvc.view.backgroundColor = UIColor.blue 47 self.present(nextvc, animated: true, completion: nil) 48 49 } 50

するとaddtargetのところにInstance member 'goTrap' cannot be used on type 'RankingViewController'; did you mean to use a value of this type instead?
というエラーが出ます。考えられる原因には何があるでしょうか。よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

メソッドの参照方法が異なっていますので、()を外せばエラーは解消されます。

tabs[1].addTarget(self, action: #selector(RankingViewController.goTrap), for: .touchUpInside) tabs[2].addTarget(self, action: #selector(RankingViewController.goEndless), for: .touchUpInside)

または

tabs[1].addTarget(self, action: #selector(self.goTrap), for: .touchUpInside) tabs[2].addTarget(self, action: #selector(self.goEndless), for: .touchUpInside)

または

tabs[1].addTarget(self, action: #selector(goTrap), for: .touchUpInside) tabs[2].addTarget(self, action: #selector(goEndless), for: .touchUpInside)

投稿2018/04/12 21:46

編集2018/04/12 22:03
newmt

総合スコア1277

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問