2012-03-24 2 views
0

2つのコンポーネントUIPickerViewを作成しようとしています。左側にはトランプ(2、3、ジャックなど)の値を保持し、 4つのスーツの画像を保持する。ここでは、関連するコードは次のとおりです。あなたはおそらく見ることができるように、私は左側のコンポーネントと右のコンポーネントに対して別々のピッカーデリゲートメソッドを作成しようとしましたUIPickerView - イメージとしての1つのコンポーネント、テキストとしてのもう1つのコンポーネント

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView { 
     return 2; 
} 

- (NSInteger)pickerView:(UIPickerView *)pickerView 
numberOfRowsInComponent:(NSInteger)component { 
     if (component == 0) 
      return [self.values count]; 
     return [self.column1 count]; 
} 


- (NSString *)pickerView:(UIPickerView *)pickerView 
     titleForRow:(NSInteger)row 
     forComponent:(NSInteger)component { 
     if (component == 0) 
      return [self.values objectAtIndex:row]; 
     else 
      return nil; 
} 

- (UIView *)pickerView:(UIPickerView *)pickerView 
     viewForRow:(NSInteger)row 
     forComponent:(NSInteger)component reusingView:(UIView *)view { 
     if(component == 1){ 
      NSString *arrayName = [[NSString alloc] initWithFormat:@"column1"]; 
      NSArray *array = [self valueForKey:arrayName]; 
      return [array objectAtIndex:row]; 
     } 
     else 
      return nil; 
} 

。しかし、これは私に意図された結果を与えていません。コードは、viewForRowメソッドを実行するだけで、他は無視しているようです。したがって、私は画像で満たされた右のコンポーネントと空の左のコンポーネントで終わる。誰もが両方のコンポーネントを実装する別の方法を知っていますか?

答えて

1

viewForRow:を実装するとすぐに、それはtitleForRow:より勝ちます。

UILabelを必要な文章で返してください。結局、titleForRow:は何もしません。ラベルだけが必要な場合は、もっと便利な方法です。

+0

また、コードがちょっと変わっているようです。 'viewForRow:'メソッドでは、あなたが現在持っている3行の代わりに '[self.column1 objectAtIndex:row]'を直接使うことができます。 – calimarkus

+0

良いコールマン。ありがとう。 –

関連する問題