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

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

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

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

Swift

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

Q&A

解決済

2回答

605閲覧

UIBarButtonとActionの関連付け

naoK

総合スコア9

Xcode

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

Swift

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

0グッド

0クリップ

投稿2017/11/01 22:25

編集2017/11/03 10:24

###前提・実現したいこと
ナビゲーションバー上のBarButtonItemとViewControllerで記述して@IBActionを関連付けしたい。

###発生している問題・エラーメッセージ
画像の通り、Actionのところから関連付けしようとしても、ボタン上で繋がらないようになってしまいます

イメージ説明

###該当のソースコード //削除ボタン @IBAction func deleteMemo(){ let ud = UserDefaults.standard if ud.array(forKey: "memoArray") != nil{ var saveMemoArray = ud.array(forKey: "memoArray") as! [String] saveMemoArray.remove(at: selectedRow) ud.set(saveMemoArray, forKey: "memoArray") ud.synchronize() self.navigationController?.popViewController(animated: true)

###試したこと
課題に対してアプローチしたことを記載してください

###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報

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

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

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

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

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

guest

回答2

0

ベストアンサー

###修正
ykwsさんから頂いた

引数なしでも関連付け自体はできてしまいました。

という情報を元に実際にやってみたところ何も問題なく接続できました。
なので引数がない関数であっても問題がないですし、それどころか普通に機能しました。

swift

1@IBAction func tapButton() { 2 print("taptap"). //機能しました 3 }

なので以下に書いた内容はcustom classの確認以外は誤りです。

###以下間違い
接続、custom classの再確認等したら繋がるってのが(自分も含めて)よくあるケースですが今回の場合は

swift

1@IBAction func deleteMemo() { 2 //処理 3}

に引数が無いのが問題だと考えられます。BarButtonItemを接続しようと思った場合コードは

swift

1@IBAction func taptap(_ sender: Any) { 2 //処理 3}

だったり

swift

1@IBAction func taptaptap(_ sender: UIBarButtonItem) { 2 //処理 3}

だったり引数があります。

投稿2017/11/03 00:40

編集2017/11/03 02:50
xAxis

総合スコア1349

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

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

ykws

2017/11/03 02:10

@xAxis 私もそれを考えたのですが、引数なしでも関連付け自体はできてしまいました。
xAxis

2017/11/03 02:40

それは全く知らなかったです。じゃあ自分は全然見当違いの事を。。。新たな知見を頂けたことに感謝すると同時にお邪魔してしまい申し訳ありません。もう少し可能性を検討してみます。
xAxis

2017/11/03 08:08

考えてみてたんですけど結局custom classの予測変換使わずに手打ちで打ち込んで誤字が有ったくらいしか思いつかなかったです。あと出来ることと言えばclean buildとかclean build folderくらいか。
naoK

2017/11/03 10:26

ykwsさん xAisさん ありがとうございます。 clean buildしてみます。 NavigationBarの上にBarButtonItem を乗っけている感じなのですが、 story board上でパーツを組み立てるところに問題はないでしょうか? だめだったら、また一から作り直してみます!
ykws

2017/11/06 23:12

それ自体は問題ないです
guest

0

まず Storyboard > ViewController > Custom Class に関連付けたいクラス名が設定されていますか?

イメージ説明

次に、Show the Assistant editor に切り替えて

イメージ説明

Storyboard のアイコン(下図赤枠の部分)からソースコードの deleteMemo に対してドラッグすると関連付けることができます。

イメージ説明

投稿2017/11/01 23:40

編集2017/11/02 02:20
ykws

総合スコア1236

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

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

naoK

2017/11/02 01:07

はい、CustomClassには設定できています!
ykws

2017/11/02 01:57

コメントありがとうございます。 Show the Assistant editor からの関連付けについて追記しました。
naoK

2017/11/02 02:17

回答頂き、ありがとうございます!storyboard上でtrashボタンをタッチしようとすると上の画像でいう「詳細」というNavigationBarが選択されてしまいます、、度々すみません!
ykws

2017/11/02 02:21

Stoaryboard 上のアイコンの位置について追記しました。
naoK

2017/11/02 04:19

ドラッグしてactionの左にある○じるしのところに持っていっても関連づかない感じです、、すみません!
ykws

2017/11/02 05:01

丸印ではなく、メソッド名 `deleteMemo` のところです。
naoK

2017/11/02 06:44

そうですね、メソッド名のところにドラッグしてもできないです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問