IOS ComboBox UIPickerView
Şubat 21, 2012 | Comments | IOS(iphone,ipad,objective c)
IOS ile ilgili ilk yazımdır. Diğer blog siteme yazsam daha mı iyi olur acaba?
Normalde IOS içinde ComboBox yerine UIPickerView kullanılıyor. Bunu kullanmak için aşağıdaki metodları implement ediyoruz. Bu arada yourumların bazıları ingilizce olarak arada sallıyorum:)



-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
return 1;
}
//Assign the selected row of value to label of text.
-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{
lbl.text=[array objectAtIndex:row];
}
//set rows number to picker
-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{
return [array count];
}
-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{
return [array objectAtIndex:row];
}
Storyboard için şu videoyu izleyebilirisniz. Ilk gördüğümde çok şaşırmıştım:)
Kısaca bu kod girilen değeri UIPickerViewe ekliyor ve UIPickerViewden seçilen değeri de label da gösteriyor.
ViewController.h
#import <UIKit/UIKit.h>
//UIViewController<UIPickerViewDelegate,UIPickerViewDataSource,UITextFieldDelegate> UITextField ve UIPickerView ait metodları kullanmak için @interface olan dosyamıza eklyioruz.
@interface ViewController : UIViewController<UIPickerViewDelegate,UIPickerViewDataSource,UITextFieldDelegate>{
//IBOutlet tanımlamasını .xib içinde tanımladığımız bileşenlere drag drop şeklinde referans vereceksek kullanırız.
IBOutlet UILabel *lbl;
IBOutlet UITextField *textField;
IBOutlet UIPickerView *comboBoxAlternative;
NSMutableArray *array;
}
//property(retain,non atomic) i do not understand. I will try to explain later.
@property(retain,nonatomic)IBOutlet UILabel *lbl;
@property(retain,nonatomic)IBOutlet UITextField *textField;
@property(retain,nonatomic)IBOutlet UIPickerView *comboBoxAlternative;
//Buttonun click olayıdır.Java daki click listenerlar gibi.
- (IBAction)inputTextToComboBox:(id)sender;
@end
ViewController.m
#import "ViewController.h"
@implementation ViewController
//set and get componenent
@synthesize lbl,textField,comboBoxAlternative;
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
#pragma mark - View lifecycle
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
array=[[NSMutableArray alloc]initWithObjects:@"one",@"two",@"three",@"five", nil];
textField.delegate=self;
//To selected set label text
lbl.text=[array objectAtIndex:[comboBoxAlternative selectedRowInComponent:0]];
}
- (void)viewDidUnload
{
[super viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
return 1;
}
//Assign the selected row of value to label of text.
-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{
lbl.text=[array objectAtIndex:row];
}
//set rows number to picker
-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{
return [array count];
}
-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{
return [array objectAtIndex:row];
}
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
}
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
}
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
}
- (void)viewDidDisappear:(BOOL)animated
{
[super viewDidDisappear:animated];
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}
//Girilen degerleri UIPickerViewe ekliyor.
- (IBAction)inputTextToComboBox:(id)sender {
[array addObject:textField.text];
[comboBoxAlternative reloadAllComponents];
[textField setText:nil];
}
-(BOOL)textFieldShouldReturn:(UITextField *)textField{
[textField resignFirstResponder];
return YES;
}
@end
