2011-12-03 7 views
0

私は特定のクライアントを選択するビューでUISegmentedControlを使用しています。これは、ビューが閉じられたときに、独自のセグメントタイトルからデータモデルのNSStringプロパティを設定します。すべて私が望んでいたのとまったく同じです。モデルに格納されているものに応じてビューをリロードすると、viewDidLoadに次のコードでUISegmentedControlを設定します。すなわち、モデルから文字列プロパティを読み取り、それをインデックスに変換し、正しいセグメントを選択して、どのクライアントがモデルに格納されているかを反映する。セグメントインデックスを設定するUISegmentedControlメソッド?

if ([self.itemToEdit.client isEqualToString:@"John"]) { 
     myIndex = 3; 
    } else if ([self.itemToEdit.client isEqualToString:@"David"]) { 
     myIndex = 2; 
    } else if ([self.itemToEdit.client isEqualToString:@"Paul"]) { 
     myIndex = 1; 
    } else if ([self.itemToEdit.client isEqualToString:@"Stephen"]) { 
     myIndex = 0; 
    } 

    self.reportEditorClient.selectedSegmentIndex = myIndex; 

すべては計画どおりに動作しますが、それは非常に厄介なようです。私は、これを行うUISegmentedControlメソッドがあるかどうかを調べるためにドキュメントを精査しましたが、何も見つかりませんでした。より良いアプローチがあるのですか、ここで正しい行にいますか?賢明な書式設定

答えて

0

にこの名前とインデックスのマッピングを置きますディクショナリであれば、if-elseのこの連鎖は、ほぼ1つのライナになります。

+0

私はNSDictionaryを見てきましたが、コードではなくモデルを変更することで将来的にそれを証明することが容易になると言うので、このメソッドを使うと思います。ポインタありがとう。 – Hoppo

0

コード、あなたがして

self.reportEditorClient.selectedSegmentIndex = [names indexOfObject:self.itemToEdit.client]; 

を名前

NSArray *names = [NSArray arrayWithObjects:@"John", @"David", @"Paul", @"Stephen", nil]; 

の配列を使用することができます(それがわずかに滑らかな印象だけど)

関連する問題