私は iOS アプリ画面を開発しています。ここには約 25 個のボタンがあり、各ボタンをクリックすると別のビュー コントローラーが起動します。基本的に、「IBAction」を 1 つ持つように実装し、各ボタンに「タグ ID」を提供します。このボタン アクションの下で、ボタン タグ ID に基づいて、各ビュー コントローラーを起動しています。ここでの問題は、このボタン ID を識別するために経由でプログラミングを行っていることですがswitch case
、このスイッチ ケースの使用を避け、ここでより効率的なプログラミングを提供したいと考えています。「スイッチケース」を削除して、この状況でより良いプログラミング方法を提供するにはどうすればよいでしょうか。
質問する
735 次
1 に答える
3
ここで、switch
ステートメントは物事を行うための最もクリーンで最も効率的な方法のようです。大きなものを持つこともできますがif-elseif
、冷たい肩を与えている場合、それはswitch
あなたにとってさらに選択肢が少ないと思います.
切り替えを本当に避けたい場合は、ボタンに 0 から 24 までのタグをNSArray
付け、View Controller のクラスの名前の配列を含むようNSClassFromString
にしてから、オブジェクトをインスタンス化するためのクラス参照を取得するために使用します。そのクラスの。
次に、次のようなことができます。
- (id)init{
self = [super init];
if(self){
self.classesArray = @[@"MyControllerOne", @"MyControllerTwo", @"MyControllerThree"];
}
return self;
}
[...]
- (IBAction)tappedButton:(UIButton *)sender{
NSString *viewControllerClassString = [self.classesArray objectAtIndex:sender.tag];
id viewController = [[NSClassFromString(viewControllerClassString) alloc] init];
// Present it modally? Push it onto the stack?
}
于 2012-10-12T04:03:48.200 に答える