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

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

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

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

Swift

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

AppleWatch

AppleWatchは、iPhoneと連動して動作する時計型のデバイスです。時間の確認だけでなく、通話や受信メールの確認などを行うことができます。

Q&A

解決済

1回答

561閲覧

watchKitにおけるボタンの無効化について

kenkenpa0907

総合スコア55

Xcode

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

Swift

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

AppleWatch

AppleWatchは、iPhoneと連動して動作する時計型のデバイスです。時間の確認だけでなく、通話や受信メールの確認などを行うことができます。

0グッド

0クリップ

投稿2022/03/16 04:25

AppleWatchのアプリ開発を初めて行なっています。
プログラミング初学者です。

タイトルのとおり、watchKitのボタンの無効化について、実装ができなくて困っています。
具体的には、ボタンを押したら、押したボタンが無効になり、もう一つのボタンが有効化するようにしたいのですが、iPhoneアプリのように実装できません。
iPhoneアプリでは、下記のようなコードで実装しました。

@IBAction func button1(_ sender: UIButton) { sender.isEnabled = false self.button2.isEnabled = true }

watchKitのコードではiPhoneアプリのようなsenderの設定がなく、
iPhoneアプリのようなコードを入力してもエラーが出てしまいます。
また調べてみた結果、isEnabledではなくsetEnabledにて実装が出来そうなのですが、自分が入力したコードではエラーが出てしまいました。
コードとしては下記のようなコードになっています。

@IBAction func ButtonWatch1() { //押したボタンの無効化 self.ButtonWatch1.setEnabled(false)   //もう一つのボタンの有効化 self.ButtonWatch2.setEnabled(true) }

結果として、Value of tuple type '()' has no member 'setEnabled'というエラーが出ています。

このエラーはiPhoneアプリで同様のことをしていた時に、senderにUIButtonを指定しなかった時に出ていたエラーであるため、watchiKitでも同様のことをすれば解決できると思っていたのですが、senderがないため指定ができなくて解決できませんでした。

watchKitのコードに関する資料や参考がなくて詰んでしまったため質問させていただきました。
初歩的な質問かもしれませんが、よければご教授願います。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2022/03/16 14:13

self.ButtonWatch1やself.ButtonWatch2の定義の部分もご記載いただけますでしょうか。 (エラーの内容からすると定義がボタンではないのでしょうか?Xcodeのことだから見当違いなエラーメッセージが表示されているだけでしょうか・・?) https://developer.apple.com/documentation/watchkit/wkinterfacebutton https://developer.apple.com/documentation/watchkit/wkinterfacebutton/1620168-setenabled
kenkenpa0907

2022/03/18 02:16

解決できました! お見込みのとおり、ボタンのアクションに対して指示を出していたためエラーが出ていました。 アウトレット接続してコードを変更したらエラーが出なくなりました。 自己解決になりますが、助けていただきありがとうございました。
guest

回答1

0

自己解決

ボタンのアクションコードに対し指示を出していたためエラーが出ていました。
アウトレット接続し、コードを変更したところエラーは出なくなりました。
ご協力いただきありがとうございました。
なお、ボタンの無効化・有効化については

@IBAction func ButtonWatch1() { //それぞれアウトレット接続したコード //ボタンの無効化 self.theButtonWatch1.setEnabled(false) //ボタンの有効化 self.theButtonWatch2.setEnabled(true) }

にて実現できました。
iPhoneアプリのコードど若干違うようでした。
ありがとうございました。

投稿2022/03/18 02:23

kenkenpa0907

総合スコア55

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問