[解決済み] addTarget:action:forControlEventsへのパラメータの渡し方
2022-07-24 23:34:43
質問
addTarget:action:forControlEventsをこのように使用しています。
[newsButton addTarget:self
action:@selector(switchToNewsDetails)
forControlEvents:UIControlEventTouchUpInside];
で、セレクタの "switchToNewsDetails" にパラメータを渡したいのですが、どうすればいいでしょうか? 唯一成功するのは、(id)senderを記述して渡すことです。
action:@selector(switchToNewsDetails:)
しかし、私は整数のような変数を渡そうとしています。このように書くとうまくいきません.
int i = 0;
[newsButton addTarget:self
action:@selector(switchToNewsDetails:i)
forControlEvents:UIControlEventTouchUpInside];
このように書いてもうまくいきません。
int i = 0;
[newsButton addTarget:self
action:@selector(switchToNewsDetails:i:)
forControlEvents:UIControlEventTouchUpInside];
どんな助けでも感謝します :)
どのように解決するのですか?
action:@selector(switchToNewsDetails:)
にはパラメータを渡さない。
switchToNewsDetails:
メソッドにパラメータを渡すことはありません。特定のアクションが発生したとき(あなたのケースではタッチアップ)、ボタンがそれを呼び出すことができるようにするためにセレクタを作成するだけです。コントロールはアクションに応答するために3種類のセレクタを使用することができ、それらのすべては、それらのパラメータの事前定義された意味を持っています。
-
パラメータなし
action:@selector(switchToNewsDetails)
-
メッセージを送信するコントロールを示す1つのパラメータを持つ
action:@selector(switchToNewsDetails:)
-
メッセージを送信するコントロールと、そのメッセージをトリガーしたイベントを示す2つのパラメータを持つ。
action:@selector(switchToNewsDetails:event:)
具体的に何をしようとしているのか不明ですが、各ボタンに特定の詳細インデックスを割り当てることを考えると、次のようにすることができます。
- 各ボタンに、必要なインデックスと等しいタグのプロパティを設定する。
-
で
switchToNewsDetails:
メソッドで、そのインデックスを取得し、適切なデータを開くことができます。- (void)switchToNewsDetails:(UIButton*)sender{ [self openDetails:sender.tag]; // Or place opening logic right here }
関連
-
XCode のコンパイル例外を解決する clang: error: linker command failed with exit code 1
-
EXC_BAD_ACCESS (code=2, address=0x0)
-
[解決済み] Xcode 7のエラーです。"Missing iOS Distribution signing identity for ..." (iOS配布用署名IDがありません)
-
[解決済み] Objective-CでNSNotificationCenterを通してメッセージを送受信する?
-
[解決済み] UIViewに角丸をつける
-
[解決済み] iPhone 5の画面解像度に対応したアプリを開発・移行するには?
-
[解決済み] Swiftを使用してアプリのバージョンとビルド番号を取得するにはどうすればよいですか?
-
[解決済み] Swift 3, 4, 5 で dispatch_after GCD を書くにはどうしたらいいですか?
-
[解決済み] Swiftで配列に要素を追加する
-
[解決済み] Cocoapods警告 - CocoaPodsがプロジェクトの基本構成を設定しなかった理由は、プロジェクトに既にカスタム構成が設定されているためです。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
iOS classic error Undefined symbols for architecture XXX:
-
制御が非ボイド関数の終了に達する
-
[解決済み] Xcode 12、iOS Simulator用にビルドしても、iOS用にビルドされたオブジェクトファイルでは、アーキテクチャ「arm64」用にリンクされます。
-
[解決済み] SwiftでUIAlertViewを作成するにはどうしたらいいですか?
-
[解決済み] iphoneアプリのベータテストはどのように行うのですか?
-
[解決済み] SwiftでiOSキーボードを任意の場所でタッチして閉じる
-
[解決済み] インポート vs #インポート - iOS 7
-
[解決済み] iOS 13でダークモードをオプトアウトすることは可能ですか?
-
[解決済み] Swiftのプロトコルでオプションのメソッドを定義するには?
-
[解決済み] Swiftで配列に要素を追加する