2012-03-24 93 views
0

我想創建一個雙組件UIPickerView,其左側包含撲克牌的值(兩個,三個,Jack等)和右側其中包含四套西裝的圖像。下面是相關代碼:UIPickerView - 一個組件作爲圖像,另一個作爲文本

- (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:'方法中,您可以直接使用'[self.column1 objectAtIndex:row]'而不是現在的三行。 – calimarkus 2012-03-24 21:17:38

+0

好通話的人。謝謝。 – 2012-03-25 00:17:30

相關問題