2010-10-13 13 views
0
顯示對象數組動態

亞我使用pickerview,但我不想要顯示對象數組simply.instead我想,如果我選擇第一選擇器的對象,所以應該動態地改變和顯示其相應的對象在第二選擇器下面.. PLZ幫助.. 我堅持它從2天.... 謝謝在2個不同pickerviews

+0

其實我能夠顯示2個採摘,但我想在第一個選擇器選擇行後,在第2個選擇器中的數據讀取。 – rose 2010-10-14 07:09:32

+0

能夠做到這一點..你可以提供相同的代碼嗎? – rose 2010-10-14 07:10:36

回答

0

這很容易。看看這個實現。也許這有助於,如果沒有,請隨時提問。

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

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component { 
    if (component == 0) 
     return 2; 
    return 5; 
} 

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component { 
    if (component == 0) { 
     if (row == 0) 
      return @"A"; 
     if (row == 1) 
      return @"B"; 
    } 
    if (component == 1) 
     return [pickerArray objectAtIndex:row]; 
    return @"FOO"; 
} 

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component { 
    if (component == 0) { 
     if (row == 0) { 
      [pickerArray release]; 
      pickerArray = [[NSArray arrayWithObjects:@"Aa", @"Ab", @"Ac", @"Ad", @"Ae", nil] retain]; 
     } 
     if (row == 1) { 
      [pickerArray release]; 
      pickerArray = [[NSArray arrayWithObjects:@"Ba", @"Bb", @"Bc", @"Bd", @"Be", nil] retain]; 
     } 
    } 
    [pickerView reloadComponent:1]; 
} 
+0

嘿謝謝..我的工作很好..現在如果我選擇像說A和Ab或任何其他組合一些行動應該執行。 – rose 2010-10-14 08:55:37

+0

喜歡A和Ab我有3個textfields與3 labels.For B和Bc我有6個textfields與6個標籤。這應該是dynamic.how我會這樣做? – rose 2010-10-14 08:55:59

+0

在pickerView:didSelectRow:inComponent中添加一些代碼:如果組件1發生更改,則添加(並刪除)這些UIViews。 [self.view addSubview:label]等 – 2010-10-14 10:32:41

1
enter code here 
#import <UIKit/UIKit.h> 

@interface RootViewController : UIViewController 
<UIPickerViewDelegate,UIPickerViewDataSource> 
{ 

    NSArray *pickerstrings; 
NSArray *pickerstrings2; 
NSMutableArray *data; 
IBOutlet UIPickerView *pickerview1; 

} 

@property (nonatomic, retain) UIPickerView *pickerview1; 

//in RootViewController.m implementation file 

-(void)viewDidLoad 

{ 

[super viewDidLoad]; 

NSArray *pickerstrings =[[NSArray alloc] initWithObjects:@"One",@"Two",@"Three",@"Four",@"Five",nil]; 

NSArray *pickerstrings2 = [[NSArray alloc] initWithObjects:@"Six",@"Seven",@"Eight",@"Nine",@"Ten",nil]; 


} 


-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView 
{ 
if(pickerView.tag==0) 

    return 2; 

else 
    { 
    return 2; 
    } 

} 

-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent: 
(NSInteger)component 

{ 

if(pickerView.tag==0) 
{ 

    if(component ==0) 
     return pickerstrings.count; 
    else 
    { 
     return pickerstrings2.count; 
    } 

} 
else 
{ 
    return data.count; 
} 

} 



-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row  
forComponent:(NSInteger)component 
{ 
    if(pickerView.tag==0) 
    { 
    if(component ==0) 
    { 
     return [pickerstrings objectAtIndex:row]; 
    } 
    else 
    { 
     return [pickerstrings2 objectAtIndex:row]; 
    } 
    } 

    else 
    { 
    if(component ==0) 
    { 
     return [data objectAtIndex:row]; 
    } 
    else 
    { 
     return[ data objectAtIndex:row]; 
    } 
    } 

} 

-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row 
inComponent:(NSInteger)component 

{ 
    if(pickerView.tag==0) 
    { 

    data = [[[NSMutableArray alloc] init ]retain]; 
    UIPickerView *thePickerView2 = (UIPickerView*)[self.view viewWithTag:1]; 

    if(component==0) 
    { 

     for (int i=0; i<=row; i++) 
     { 
      [data addObject:[@"" stringByAppendingFormat:@"%d",i+1]]; 
     } 

     [thePickerView2 reloadComponent:0]; 
     [thePickerView2 selectRow:row inComponent:0 animated:YES]; 
    } 

    else 
    { 
     for(int j=6; j<=10; j++) 
     { 
      [data addObject:[@"" stringByAppendingFormat:@"%d", j]]; 
     } 

     [thePickerView2 reloadComponent:1]; 
     [thePickerView2 selectRow:row inComponent:1 animated:YES]; 

    } 
    [data release]; 
    } 

    else if(pickerView.tag==1) 
    { 
    if(component==0) 
     { 
     [pickerview1 selectRow:row inComponent:0 animated:YES]; 
     } 
    else 
    { 
     [pickerview1 selectRow:row inComponent:1 animated:YES]; 
    } 
    } 

} 
相關問題