UIPickerView - 一个组件作为图像,另一个组件作为文本

时间:2012-03-24 20:14:03

标签: objective-c ios4

我正在尝试创建一个双组件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 个答案:

答案 0 :(得分:1)

可能很快,当您实施viewForRow:时,它会胜过titleForRow:

只需返回包含所需文字的UILabel即可。毕竟titleForRow:没有做任何其他事情。如果你只需要标签,这只是一种更方便的方式。