Tuesday, October 23, 2012

Multiple PickerViews in one View


Multiple PickerViews in one View


Solution

if([pickerView isEqual:pickerView2])
    {
        return 3;
    }
    if ([pickerView isEqual:pickerView1]) {
        return 4;
    }


Complete Source Code

ViewController.h

@interface ViewController : UIViewController <UIPickerViewDelegate, UIPickerViewDataSource>
{
    IBOutlet UILabel *mlabel;
    NSMutableArray *arrayNo;
    IBOutlet UIPickerView *pickerView2;
    NSMutableArray *arrayNo1;
    IBOutlet UIPickerView *pickerView1;

}
@property (nonatomic, retain) UILabel *mlabel;
@end

ViewController.m

#import "ViewController.h"

@implementation ViewController
@synthesize mlabel;

- (void)viewDidLoad
{
[super viewDidLoad];
arrayNo = [[NSMutableArray alloc] init];
[arrayNo addObject:@" 100 "];
[arrayNo addObject:@" 200 "];
[arrayNo addObject:@" 400 "];
[arrayNo addObject:@" 600 "];
[arrayNo addObject:@" 1000 "];
[pickerView2 selectRow:1 inComponent:0 animated:NO];
    
    arrayNo1 = [[NSMutableArray alloc] init];
[arrayNo1 addObject:@" 1001 "];
[arrayNo1 addObject:@" 2001 "];
[arrayNo1 addObject:@" 4001 "];
[arrayNo1 addObject:@" 6001 "];
[arrayNo1 addObject:@" 10001 "];
[pickerView1 selectRow:1 inComponent:0 animated:NO];
    
    mlabel.text= [arrayNo1 objectAtIndex:[pickerView2 selectedRowInComponent:0]];
}

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView;
{
    if([pickerView isEqual:pickerView2])
    {
        return 1;
    }
    if ([pickerView isEqual:pickerView1]) {
        return 1;
    }
}

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
    if([pickerView isEqual:pickerView2])
    {
        mlabel.text= [arrayNo objectAtIndex:row];
    }
    if ([pickerView isEqual:pickerView1]) {
        mlabel.text= [arrayNo1 objectAtIndex:row];
    }
}

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component;
{
if([pickerView isEqual:pickerView2])
    {
        return 3;
    }
    if ([pickerView isEqual:pickerView1]) {
        return 4;
    }
}

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component;
{
    if([pickerView isEqual:pickerView2])
    {
        return [arrayNo objectAtIndex:row];
    }
    if ([pickerView isEqual:pickerView1]) {
        return [arrayNo1 objectAtIndex:row];
    }
}

- (void)didReceiveMemoryWarning {
// Releases the view if it doesn't have a superview.
    [super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}

- (void)viewDidUnload
{

}

- (void)dealloc {
    [super dealloc];
}

@end

ViewController.XIB


2 UIPicker and 1 UILabel
Connect Datasource and delegate of both picker to file owner.
NOTE:-
Sorry for naming convention. You can achieve this multi picker by using one pickerView and divide it in number of columns.
In numberOfComponentsInPickerView return how many columns you want in one pickerView.

No comments:

Post a Comment