динамическое отображение массива объектов в 2 разных окнах выбора - PullRequest
0 голосов
/ 13 октября 2010

Да, я использую окно выбора, но я не хочу просто отображать массив объектов. Вместо этого я хочу, чтобы, если я выбрал объект в первом окне выбора, он динамически изменялся и отображал соответствующие объекты во втором окне выбора ниже него Пожалуйста, помогите .. я застрял с этим с 2 дня .... спасибо

Ответы [ 2 ]

1 голос
/ 15 декабря 2010
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];
     }
  }

}
0 голосов
/ 13 октября 2010

Это довольно просто.Посмотрите на эту реализацию.Может быть, это помогает, если нет, не стесняйтесь спрашивать.

- (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];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...