Я встречал это. Давайте посмотрим на это в деталях. Чтобы создать свой собственный вид выбора, вы создаете свой собственный класс UIView, например, :
@interface TimeAroundView : UIView
{
NSString *title;
UIImage *image;
}
@property (nonatomic, retain) NSString *title;
@property (nonatomic, retain) UIImage *image;
@end
Затем в вашем собственном контроллере вида сборщика вы создаете некоторый контейнер, например. NSArray, который получит все объекты TimeAroundView, которые вы хотите представить в представлении выбора. Итак, для каждого объекта вы должны сделать
timeAroundViewObject.userInteractionEnabled = NO;
Я думаю - (id) init - лучшее место для заполнения этого контейнера, так что вы получите что-то вроде этого:
- (id)init
{
self = [super init];
if (self) {
// create the data source for this custom picker
NSMutableArray *viewArray = [[NSMutableArray alloc] init];
TimeAroundView *earlyMorningView = [[TimeAroundView alloc] initWithFrame:CGRectZero];
earlyMorningView.title = @"Early Morning";
earlyMorningView.image = [UIImage imageNamed:@"12-6AM.png"];
earlyMorningView.userInteractionEnabled = NO;
[viewArray addObject:earlyMorningView];
[earlyMorningView release];
TimeAroundView *lateMorningView = [[TimeAroundView alloc] initWithFrame:CGRectZero];
lateMorningView.title = @"Late Morning";
lateMorningView.image = [UIImage imageNamed:@"6-12AM.png"];
lateMorningView.userInteractionEnabled = NO;
[viewArray addObject:lateMorningView];
[lateMorningView release];
// .... (more of objects)
self.customPickerArray = viewArray;
[viewArray release];
}
return self;
}
А в вашем pickerView: viewForRow: forComponent: reusingView: вы просто возвращаете правильный элемент из массива.
Это работает для меня.