2012-09-25 34 views
2

我对Xcode是完全陌生的,任何与编码有关的东西都是真的,但是我对它有所了解,直到现在似乎都没有问题。我想要做什么...带条件的UIPickerView

我有一个UIPickerView有2个组件由数组填充。这很好,可爱,但我希望进一步迈出这一步。

在左侧的组件中,我希望列出具有永不变化的常量值。在第二个组件中,我希望有一个在第一个组件中点击过的选择的子列表。

例如: -

BOY : Matt 
     Tom 
     Pete 

GIRL : Jess 
     Nina 
     Sarah 

我想我可以用一个if语句获取这些变化发生,但不知道的语言......只有这么多的试错一个人可以拿!

干杯

@interface TripsViewController() 
@end 

@implementation TripsViewController 

@synthesize ActivitysLabel; 
@synthesize TripsLabel; 

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView 
{ 
    return 2; 
} 

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component { 
    if (component == ACTIVITY) 
     return [ArrayActivity count]; 

    if (component == TRIPS) 
     return [ArrayTrips count]; 

    return 0; 
} 

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{ 

    if (component == ACTIVITY) 
     return [ArrayActivity objectAtIndex:row]; 

    if (component == TRIPS) 
     return [ArrayTrips objectAtIndex:row]; 
    return 0; 
} 

- (void) pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component { 
    ActivitysLabel.text = [ArrayActivity objectAtIndex:[pickerView selectedRowInComponent:0]]; 
    TripsLabel.text = [ArrayTrips objectAtIndex:[pickerView selectedRowInComponent:1]]; 
} 

- (id)initWithStyle:(UITableViewStyle)style 
{ 
    self = [super initWithStyle:style]; 
    if (self) { 
     // Custom initialization 
    } 
    return self; 
} 

- (void)viewDidLoad 

{ 
    [super viewDidLoad]; 
    ArrayActivity = [[NSMutableArray alloc] init]; 
    [ArrayActivity addObject:@"Abseiling"]; 
    [ArrayActivity addObject:@"Canyoning"]; 
    [ArrayActivity addObject:@"Rock Climbing"]; 
    [ArrayActivity addObject:@"Bush Walking"]; 
    [ArrayActivity addObject:@"Mountain Biking"]; 
    [ArrayActivity addObject:@"4wd Tours"]; 


    // My attempts at trying to solve this problem 


    if (ArrayActivity containsObject:NSString @"Canyoning") { 
     ArrayTrips = [[NSMutableArray alloc] init]; 
     [ArrayTrips addObject:@"Empress Canyon"]; 
     [ArrayTrips addObject:@"Sheep Dip"]; 
     [ArrayTrips addObject:@"butterbox"]; 
    } 
+0

或者有人可以给我一个链接,如果这已在其他地方回答。真的想把这个问题排除出去。 –

回答

0

的代码,我认为是通常是正确的,但你必须选择,这将改变可能选择的项目之后做的,就是调用reloadComponent与其中的数据是不同的列的索引。在选择新条目之后立即执行该操作(确保只在正确的组件选择上触发重新加载)。