Использование другого делегата не так просто.Создайте отдельный класс,
@interface MyCustomDelegate : NSObject <UIPickerViewDelegate>
и реализуйте методы делегата, в этом случае
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row
forComponent:(NSInteger)component {
// this method is use for normal pickers, and I would judge whether the picker that calling
// this method is a normal one or the special one by pickerView.
}
Как только вы сделаете это, создайте экземпляр этого класса и установите его как делегат как..
pickerView.delegate = [[MyCustomDelegate alloc] initWithData:data] autorelease];
где данные могут быть данными, которые вы, возможно, захотите включить в методы делегата для заголовков.
Вы можете использовать один и тот же экземпляр делегата для всех сборщиков.или может создавать отдельные экземпляры.Много зависит от того, какие данные у вас есть.Если они все не связаны друг с другом, было бы неплохо использовать отдельные экземпляры, в противном случае вы могли бы продолжить только один.
Ну, вот и все.
Что касаетсяво-вторых, вы будете делать что-то вроде этого
-(UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view {
if (pickerView==specialPickerView) {
}
else {
UILabel *lbl = [[UILabel alloc] init];
lbl.text = [self pickerView:pickerView titleForRow:row forComponent:component];
//do some more styling like setting up the font as bold
//adding some padding to the text and some shiny things
return lbl;
}
}
Конечно, вы будете делать это в вашем существующем классе.