タグが多くの状況で機能することに同意しますが、特定したい場所でプッシュ可能な 100 個のボタンのマトリックスがある場合、整数タグを操作するのは面倒です: (1) 何が押されたか、(2) 押された値. 私は、手に負えなくなったタグ番号を使用して行/列の命名スキームを発明し始めていることに気付きました。
複数のコントロールで同じハンドラーを共有する必要があり、IB で UI を慎重に設計して、プッシュされたものに基づいて名前と値のペアをキーと値のストアに渡す必要がありました。
タグの代わりに、UISegmentedControl の別の回避策を思いつきました (他のコントロールでも機能します)。
(1) 新しいクラスとサブクラス UISegmentedControl を作成します。文字列プロパティ MyCustomKey を新しいクラスに追加します。
@interface CustomSegmentedControl : UISegmentedControl
@property (nonatomic, retain) NSString* myCustomKey;
@end
(2) IB に戻り、UISegmentedContol インスタンスを CustomSegmentedControl のインスタンスに変更します。IB「ユーザー定義ランタイム属性」を使用して、IB を使用して myCustomKey の値を設定しました。KeyValueCoding がプロパティの設定を処理します。

(3) すべてのボタンを単一の IBAction に接続します。
(4) IBAction では、カスタム属性を読み取ることでキーと値のペアを抽出できます。
- (IBAction)myButtonPressed:(id) sender
{
if ([sender isKindOfClass:[CustomSegmentedControl class]] == false)
return;
// get the key-values from the control
CustomSegmentedControl *control = (CustomSegmentedControl *)sender;
NSString *key = [control valueForKey:@"myCustomKey"];
NSNumber *value = [NSNumber numberWithInteger:[control selectedSegmentIndex]];
NSLog(@"Pressed control %@ with a value of %@", key, value);
}
この場合、セグメント化されたコントロールの整数値にのみ関心がありましたが、コントロールから任意のプロパティを値として取得できました。
お役に立てれば。