ios - PickerView is not dismissing when Done button is pressed -
i have created text field upon entry open picker view toolbar contains done button. however, when done button pressed picker view doesn't dismiss. else works want except this. i've tried several options no avail. please review , let me know i'm missing.
my code below:
viewcontroller.h
#import <uikit/uikit.h> @interface viewcontroller : uiviewcontroller {iboutlet uitextfield *productdescription; iboutlet uipickerview *productpicker; nsarray *productlistarray}
viewcontroller.m
#import "viewcontroller.h" @interface viewcontroller () @end @implementation viewcontroller -(void)addpickerview{ productlistarray = [[nsarray alloc]initwithobjects: @"myarray", nil]; productdescription.delegate = self; [self.view addsubview:productdescription]; [productdescription setplaceholder:@"product description"]; productpicker = [[uipickerview alloc]init]; productpicker.datasource = self; productpicker.delegate = self; productpicker.showsselectionindicator = yes; uibarbuttonitem *donebutton = [[uibarbuttonitem alloc] initwithtitle:@"done" style:uibarbuttonitemstyledone target:self action:@selector(resignfirstresponder)]; uitoolbar *toolbar = [[uitoolbar alloc]initwithframe: cgrectmake(50, 320, 50, 50)]; [toolbar setbarstyle:uibarstyleblackopaque]; nsarray *toolbaritems = [nsarray arraywithobjects: donebutton, nil]; [toolbar setitems:toolbaritems]; productdescription.inputview = productpicker; productdescription.inputaccessoryview = toolbar; } - (void)viewdidload { [super viewdidload]; [self addpickerview]; } #pragma mark - text field delegates -(void)textfielddidbeginediting:(uitextfield *)textfield { ([textfield.text isequaltostring:@""]); } #pragma mark - picker view data source -(nsinteger)numberofcomponentsinpickerview:(uipickerview *)pickerview{ return 1; } -(nsinteger)pickerview:(uipickerview *)pickerview numberofrowsincomponent:(nsinteger)component{ return [productlistarray count]; } #pragma mark- picker view delegate -(void)pickerview:(uipickerview *)pickerview didselectrow: (nsinteger)row incomponent:(nsinteger)component{ [productdescription settext:[productlistarray objectatindex:row]]; } - (void)donebutton:(uibarbuttonitem *)sender{ nslog(@"done touched"); [productpicker sethidden:yes]; } - (nsstring *)pickerview:(uipickerview *)pickerview titleforrow: (nsinteger)row forcomponent:(nsinteger)component{ return [productlistarray objectatindex:row]; } @end
.m file
xib file in take textfield , set delegate connect.
#import "yourviewcontroller.h" @interface yourviewcontroller ()<uipickerviewdatasource,uipickerviewdelegate> { uipickerview *productpicker; nsarray *productlistarray; iboutlet uitextfield *productdescription; } @end - (void)viewdidload { [super viewdidload]; [self addpickerview]; } -(void)addpickerview { productlistarray = [[nsarray alloc]initwithobjects:@"myarray",@"rohit",@"change",@"your view", nil]; [productdescription setplaceholder:@"product description"]; productpicker = [[uipickerview alloc]init]; productpicker.datasource = self; productpicker.delegate = self; productpicker.showsselectionindicator = yes; uitoolbar* toolbar = [[uitoolbar alloc] init]; toolbar.barstyle = uibarstyleblack; toolbar.translucent = yes; toolbar.tintcolor = nil; [toolbar sizetofit]; uibarbuttonitem *donebutton = [[uibarbuttonitem alloc]initwithtitle:@"done" style:uibarbuttonitemstyledone target:self action:@selector(donebutton:)]; [toolbar setitems:[nsarray arraywithobjects:donebutton, nil]]; productdescription.inputview = productpicker; productdescription.inputaccessoryview = toolbar; } - (ibaction)donebutton:(id)sender { nslog(@"done touched"); [productpicker removefromsuperview]; [productpicker resignfirstresponder]; [self.view endediting:yes]; } #pragma mark - text field delegates - (void)textfielddidbeginediting:(uitextfield *)textfield { productdescription.inputview = productpicker; } #pragma mark - text field delegates - (void)textfielddidbeginediting:(uitextfield *)textfield { productdescription.inputview = productpicker; } #pragma mark - picker view data source -(nsinteger)numberofcomponentsinpickerview:(uipickerview *)pickerview{ return 1; } -(nsinteger)pickerview:(uipickerview *)pickerview numberofrowsincomponent:(nsinteger)component{ return [productlistarray count]; } #pragma mark- picker view delegate -(void)pickerview:(uipickerview *)pickerview didselectrow:(nsinteger)row incomponent:(nsinteger)component{ [productdescription settext:[productlistarray objectatindex:row]]; } - (nsstring *)pickerview:(uipickerview *)pickerview titleforrow:(nsinteger)row forcomponent:(nsinteger)component{ return [productlistarray objectatindex:row]; } i hope great.
Comments
Post a Comment