1

私は iOS アプリ画面を開発しています。ここには約 25 個のボタンがあり、各ボタンをクリックすると別のビュー コントローラーが起動します。基本的に、「IBAction」を 1 つ持つように実装し、各ボタンに「タグ ID」を提供します。このボタン アクションの下で、ボタン タグ ID に基づいて、各ビュー コントローラーを起動しています。ここでの問題は、このボタン ID を識別するために経由でプログラミングを行っていることですがswitch case、このスイッチ ケースの使用を避け、ここでより効率的なプログラミングを提供したいと考えています。「スイッチケース」を削除して、この状況でより良いプログラミング方法を提供するにはどうすればよいでしょうか。

4

1 に答える 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 に答える