UIPickerView与DONEbutton

我在我的应用程序中有一个UIPickerView ,我想要一个完成button来隐藏select器。

我不想使用一个操作表,因为我想关注其余的view.i意味着所有的视图必须是活动的。

以下是我如何创buildselect器:

UIPickerView *pickerViewCountry = [[UIPickerView alloc] init]; pickerViewCountry.showsSelectionIndicator = YES; pickerViewCountry.dataSource = self; pickerViewCountry.delegate = self; pickerViewCountry.frame = CGRectMake(0,210 , 320, 15); [self.view addSubview:pickerViewCountry]; [pickerViewCountry release]; 

尝试使用操作表制作自定义select器

 UIActionSheet *actionSheet; NSString *pickerType; -(IBAction)BtnPressed:(id)sender { [self createActionSheet]; pickerType = @"picker"; select = NO; UIPickerView *chPicker = [[UIPickerView alloc] initWithFrame:CGRectMake(0.0, 44.0, 0.0, 0.0)]; chPicker.dataSource = self; chPicker.delegate = self; chPicker.showsSelectionIndicator = YES; [actionSheet addSubview:chPicker]; sessoTxt.text = [sessoArray objectAtIndex:0]; [chPicker release]; } - (void)createActionSheet { if (actionSheet == nil) { // setup actionsheet to contain the UIPicker actionSheet = [[UIActionSheet alloc] initWithTitle:@"Select" delegate:self cancelButtonTitle:nil destructiveButtonTitle:nil otherButtonTitles:nil]; UIToolbar *pickerToolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)]; pickerToolbar.barStyle = UIBarStyleBlackOpaque; [pickerToolbar sizeToFit]; NSMutableArray *barItems = [[NSMutableArray alloc] init]; UIBarButtonItem *flexSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil]; [barItems addObject:flexSpace]; [flexSpace release]; UIBarButtonItem *doneBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(pickerDone:)]; [barItems addObject:doneBtn]; [doneBtn release]; [pickerToolbar setItems:barItems animated:YES]; [barItems release]; [actionSheet addSubview:pickerToolbar]; [pickerToolbar release]; [actionSheet showInView:self.view]; [actionSheet setBounds:CGRectMake(0,0,320, 464)]; } } #pragma mark UIPickerViewDelegate Methods - (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView { return 1; } - (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component { int count; if ([pickerType isEqualToString:@"picker"]) count = [array count]; return count; } - (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component { NSString *string; if ([pickerType isEqualToString:@"picker"]) string = [array objectAtIndex:row]; return string; } // Set the width of the component inside the picker - (CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component { return 300; } // Item picked - (void)pickerView:(UIPickerView *)thePickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component { select = YES; if ([pickerType isEqualToString:@"picker"]) { Txt.text = [array objectAtIndex:row]; } } - (void)pickerDone:(id)sender { if(select == NO) { if ([pickerType isEqualToString:@"picker"]) { Txt.text = [array objectAtIndex:0]; } } [actionSheet dismissWithClickedButtonIndex:0 animated:YES]; [actionSheet release]; actionSheet = nil; } } 

你可以像这样添加一个工具栏到UIPickerView

 // initiaize picker view UIPickerView *pickerView=[[UIDatePicker alloc]init];//Date picker pickerView.frame=CGRectMake(0,44,320, 216); pickerView.datePickerMode = UIDatePickerModeDate; [pickerView setMinuteInterval:5]; [self.view addsubview:pickerView] toolBar= [[UIToolbar alloc] initWithFrame:CGRectMake(0,0,320,44)]; [toolBar setBarStyle:UIBarStyleBlackOpaque]; UIBarButtonItem *barButtonDone = [[UIBarButtonItem alloc] initWithTitle:@"Done" style:UIBarButtonItemStyleBordered target:self action:@selector(changeDateFromLabel:)]; toolBar.items = [[NSArray alloc] initWithObjects:barButtonDone,nil]; barButtonDone.tintColor=[UIColor blackColor]; [pickerView addSubview:toolBar]; 

select器视图应设置为您input国家/地区的文本字段的input视图。 您应该创build一个带有标准Done系统项目的工具栏,并将其设置为同一字段的inputAccessoryView

你可以通过用UIPickerView的animation添加一个带有完成button的UIToolBar来完成。

我甚至会尝试使用类似EAActionSheetPicker的东西。 它pipe理一个actionSheet中的pickerView / datePicker的显示。 这可能只是你正在寻找的东西。