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

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

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

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

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

Q&A

2回答

7995閲覧

【Swift】tagを使ったボタンの判別方法

eqiu_203

総合スコア8

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

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

0グッド

0クリップ

投稿2017/10/23 07:27

編集2022/01/12 10:55

###前提・実現したいこと
Swiftで3つのボタンのうち、どのボタンが押されたかをtagで判別し、UIImageのImageを変更したいです。
enumとswitchを使った例を参考にしたのですがエラーが出てしまいます。
参考にしたものにはpButtonAction()の中は何もないのですが、自分自身で試すと()にAnyが必要だと出ます。
この場合はどうすれば良いでしょうか?

また、参考にしたものには関連付けをどの様に行えば良いのかが書いていなかったので合わせてご教授いただければ嬉しいです。

###発生している問題・エラーメッセージ

Missing argument for parameter #1 in call

###該当のソースコード

swift

1@IBAction func pButtonAction(_ sender: Any) { 2 if let button = sender as? UIButton { 3 if let tag = pButtonTag(rawValue: button.tag) { 4 switch tag { 5 case .pButton0: 6 pButtonAction() 7 case .pButton1: 8 pButtonAction() 9 case .pButton2: 10 pButtonAction() 11 } 12 } 13 } 14 }

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

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

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

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

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

MasakiHori

2017/10/23 07:35

提示されたコードだけでは何もわかりません。 参考にされたコードを提示することは可能ですか?
guest

回答2

0

想像ですが、以下のようなエラー表示となっていたりしますか?

イメージ説明

そうであれば、 pButtonAction にパラメータを渡さずに呼び出してしまっているため、発生しています。これは一つ目のパラメータが渡されていないというエラー内容になります。

そもそも pButtonAction の中で pButtonAction を呼び出すのはこのケースの場合は不適切なので、 case 文ごとに適切な処理を記述しましょう。

投稿2017/10/23 08:13

ykws

総合スコア1236

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

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

0

参考にした記事(?)を見ないと何とも言えませんが、それぞれのcaseの中は、pButtonAction()と書くのではなく、caseごとの処理を書くということではないですか?例えば、

swift

1switch tag { 2case .pButton0: 3 pButtonAction0() 4case .pButton1: 5 pButtonAction1() 6case .pButton2: 7 pButtonAction2() 8} 9 10func pButtonAction0() { 11 //ボタン0の処理 12} 13 14func pButtonAction1() { 15 //ボタン1の処理 16} 17 18func pButtonAction2() { 19 //ボタン2の処理 20}

とか。


ちなみにエラーの原因は、関数pButtonActionがpButtonAction(_ sender: Any)と引数1個で定義されているのに、pButtonAction()と引数無しで呼び出しているからです。

投稿2017/10/23 07:40

fuzzball

総合スコア16731

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

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

fuzzball

2017/10/23 07:47

buttonAction1()、buttonAction2()となってますよね? 最後の数字を見落としてます。
eqiu_203

2017/10/23 07:52

ほんとですね! すいません。ご指摘ありがとうございます。
eqiu_203

2017/10/23 07:56

buttonAction1()と直してみたところ、Did you mean 'buttonAction'?と表示され、最後の数字を消す様にと表示されます。
fuzzball

2017/10/23 08:10

私の回答に書いてあるコードを見ましたか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問