4つのUIImageViewと4つのUIButtonを使用してアプリを作成しています。各ボタンは、UIImageViewを変更できるようにフォトライブラリを開くオプションがあるUIAlerViewに接続されています。私の問題は、どのUIButtonが押されたかをUIAlertViewに伝える方法がわからないことです。
どのボタンが押されたかをどのように書くことができますか?
4つのUIImageViewと4つのUIButtonを使用してアプリを作成しています。各ボタンは、UIImageViewを変更できるようにフォトライブラリを開くオプションがあるUIAlerViewに接続されています。私の問題は、どのUIButtonが押されたかをUIAlertViewに伝える方法がわからないことです。
どのボタンが押されたかをどのように書くことができますか?
やる方法はたくさんあります。
アクションでは、送信者をログに記録すると、どのボタンが押されたかが表示されます。
-(IBAction) myFirstButton: (id) sender {
NSLog(@"User clicked %@", sender);
// Do something here with the variable 'sender'
/*if ( [[sender title] isEqualToString:@"Button 1"] ) {
//do whatever you want
*/
}
2番目の方法は、通知を投稿して監視することです。
ボタンにタグを追加できます。
Interface Builderを使用している場合は、すべてのボタンを別のメソッドに接続するか、別のターゲットを追加できます。簡単ですが、あまりスケーラブルではないか、動的な数のボタンと互換性がありません。
以下を使用して、すべてのボタンに同じターゲットとセレクターを追加します。
[_yourButton1 addTarget:self
action:@selector(aButtonTapped:)
forControlEvents:UIControlEventTouchDown];
そして、aButtonタップメソッド内で、どのボタンがタップされているかを確認し、それに応じて動作します。
- (void) aButtonTapped:(id) sender{
if ( sender == _yourButton2) //Do sth
}
どちらの場合も、InterfaceBuilderの使用は簡単になります。