Search code examples
iosobjective-cuipickerview

Done button in Uipicker view is not working


i want to add done button in uipicker view in order to get selected value of picker view in text field i had tried below code but it is not working. when i create barbutton name' Done' and perform self action on it, that function is not triggering below are my code kindly please review it. Thanx in advance.

- (IBAction)selectbtn:(id)sender {
    pickerview = [[UIPickerView alloc] initWithFrame:CGRectMake(5, 40, 300, 300)];
    pickerview.showsSelectionIndicator = YES;
    pickerview.hidden = NO;
    pickerview.delegate = self;
    UIToolbar *toolBar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
    toolBar.barStyle = UIBarStyleBlackOpaque;

    UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(doneTouched:)];

    [toolBar setItems:[NSArray arrayWithObjects:doneButton, nil]];
    self.Textbox.inputAccessoryView=toolBar;
    [pickerview addSubview:toolBar];

    [self.view addSubview:pickerview];

}
- (void)doneTouched:(UIBarButtonItem *)sender // this function is not triggering
{
    // hide the picker view
    [self.Textbox resignFirstResponder]; // 


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


}
-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
    return self.jsonresultarr.count;


}
-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{

//    return [[self.jsonresultarr objectAtIndex:row] objectForKey:@"Company_Id"];
  //  NSObject *companyId = [[self.jsonresultarr objectAtIndex:row] objectForKey:@"Company_Id"];
    NSObject *companyName = [[self.jsonresultarr objectAtIndex:row] objectForKey:@"Company_Name"];
    return [NSString stringWithFormat:@"%@", companyName, nil];




}
-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
    self.Textbox.text=[[self.jsonresultarr objectAtIndex:row] objectForKey:@"Company_Name"];
    [self.pickerview removeFromSuperview];


}

Solution

  • UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(doneTouched)];
    
    [toolBar setItems:[NSArray arrayWithObjects:doneButton, nil]];
    self.Textbox.inputAccessoryView=toolBar;
    
    
    - (void)doneTouched   
    {
    
     NSLog (@"result");
    [self.Textbox resignFirstResponder];  
    
    
    }