iphone中隐藏uipickerview的问题

Posted

技术标签:

【中文标题】iphone中隐藏uipickerview的问题【英文标题】:issue of hide uipickerview in iphone 【发布时间】:2012-11-17 04:03:30 【问题描述】:

我想在带有完成和取消按钮的pickerView顶部显示带有UIToolBar的UIPickerView。附加的是相同的屏幕截图。我在视图底部也有标签栏控制器,我想在底部栏上显示pickerView这就是我在 actionsheet 中使用 uipickerView 的原因。现在我的问题是如何在 UIActionSheet 中添加的 cancelButton click 上关闭该 pickerView?

下面是显示pickerView的函数:

-(IBAction)setMile:(id)sender
   
      menu = [[UIActionSheet alloc] initWithTitle:nil
                                                  delegate:self
                                         cancelButtonTitle:nil
                                    destructiveButtonTitle:nil
                                         otherButtonTitles:nil];
    // Add the picker
    UIPickerView *pickerView = [[UIPickerView alloc] initWithFrame:CGRectMake(0,55,0,0)];
    pickerView.delegate = self;
pickerView.showsSelectionIndicator = YES;    // note this is default to NO

UIToolbar *pickerToolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0,0,320,44)];
pickerToolbar.barStyle = UIBarStyleBlackOpaque;
[pickerToolbar sizeToFit];

NSMutableArray *barItems = [[NSMutableArray alloc] init];


UIBarButtonItem *cancelBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(setMileCancel:)];
[barItems addObject:cancelBtn];
[cancelBtn release];
cancelBtn=nil;

UIBarButtonItem *flexSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil];
[barItems addObject:flexSpace];
[flexSpace release];
flexSpace=nil;

UIBarButtonItem *doneBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(setMileDone:)];
[barItems addObject:doneBtn];
[doneBtn release];
doneBtn=nil;


[pickerToolbar setItems:barItems animated:YES];
[barItems release];
barItems=nil;

[menu addSubview:pickerToolbar];
[menu addSubview:pickerView];
[menu showInView:self.view];
//[menu showFromTabBar:[[self tabBarController] tabBar]];  this code is not working
[menu setBounds:CGRectMake(0,0,320, 545)];
[pickerView release];
[menu release];
pickerView=nil;
menu=nil;

我在点击取消按钮时有以下代码

-(IBAction)setMileCancel:(id)sender
 
   //[menu removeFromSuperview];
   [menu dismissWithClickedButtonIndex:0 animated:YES];
 

【问题讨论】:

点击完成按钮或取消按钮时,您要关闭操作表吗? @PratyushaTerli 是的,我想隐藏 pickerView 和工具栏以及所有单击取消按钮。 尝试 - (void)dismissWithClickedButtonIndex:(NSInteger)buttonIndex animated:(BOOL)animated; @PratyushaTerli 我已经尝试过这段代码,但它没有被解雇。 【参考方案1】:
 //   menu=nil;
 Please comment this line, then it will work

【讨论】:

我试过这段代码,但它没有关闭。我也试过下面的代码 [menu removeFromSuperview];【参考方案2】:

您为什么使用UIActionSheet 来完成此操作?将UIPickerView 设为UITextFieldinputView,并将UIToolBar 设为UITextFieldinputAccessoryView。这样,您只需要在文本字段上使用become/resignFirstResponder 即可关闭UIPickerViewUIToolBar,而不会出现任何乱码!欲了解更多信息,UITextField Reference。希望有帮助!

【讨论】:

【参考方案3】:

我已经解决了这个问题。 只需从上面的代码中删除以下两行:

[menu release];
menu=nil;

【讨论】:

以上是关于iphone中隐藏uipickerview的问题的主要内容,如果未能解决你的问题,请参考以下文章

UIPickerView 选择和隐藏

UIPickerView 作为 inputView 不隐藏在 iPad 上

动态显示/隐藏使用界面生成器创建的 UIPickerView

iPhone应用程序中显示/隐藏键盘的问题

iPhone:多个 UIPickerViews

iPhone 6s plus 设备中的 UIPickerView UI 和功能问题