我正在尝试创建一个双组件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方法,忽略另一个。因此,我最终得到了正确的组件,其中包含图像,左侧组件为空。有人知道填充这两个组件的不同方法吗?
答案 0 :(得分:1)
可能很快,当您实施viewForRow:
时,它会胜过titleForRow:
。
只需返回包含所需文字的UILabel
即可。毕竟titleForRow:
没有做任何其他事情。如果你只需要标签,这只是一种更方便的方式。