如何以编程方式在按钮点击时隐藏 UIPickerview?

Posted

技术标签:

【中文标题】如何以编程方式在按钮点击时隐藏 UIPickerview?【英文标题】:How do you hide a UIPickerview on button tap programmatically? 【发布时间】:2015-12-28 10:53:51 【问题描述】:

我在 uitablview 原型单元格中有一个 uipickerivew,我只想在按下完成按钮时隐藏。请帮帮我。

这是我如何创建 uipickeriview 和完成按钮的代码。

 self.pickerView = [[UIPickerView alloc] initWithFrame:(CGRect)0, 0, 330, 200];
self.pickerView.delegate = self;
self.pickerView.dataSource = self;
self.pickerView.center = (CGPoint)160, 640;
self.pickerView.hidden = YES;
self.pickerView.backgroundColor =[UIColor whiteColor];

[self.view addSubview:self.pickerView];





UIToolbar *toolBar= [[UIToolbar alloc] initWithFrame:CGRectMake(0,0,320,44)];
[toolBar setBarStyle:UIBarStyleBlackOpaque];
UIBarButtonItem *flex = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil];

UIBarButtonItem *barButtonDone = [[UIBarButtonItem alloc] initWithTitle:@"Done"
                                                                  style:UIBarButtonItemStyleBordered
                                                                 target:self
                                                                 action:@selector(pickerDoneClicked)];
toolBar.items = @[barButtonDone];
toolBar.items = @[flex, barButtonDone];
barButtonDone.tintColor = [UIColor lightGrayColor];
[_pickerView addSubview:toolBar];


-(void) pickerDoneClicked 

[_pickerView resignFirstResponder];

【问题讨论】:

首先你在原型单元中有一个pickerView,或者它是你的主视图的子视图?您以编程方式将 pickerView 作为 subView 添加到主视图以及您在哪里实现 pickerDoneClicked 方法? self.pickerview.hidden=YES; 感谢您的回复女士,当我选择行时,此行隐藏选择器视图,我想在单击完成按钮时隐藏它。 请给我一些想法? 使用 [self.view removeFromSuperview]; 【参考方案1】:

最好不要每次都创建和删除,而是在视图加载后创建您的pickerview,然后在您的单元格中执行:

[_pickerView becomeFirstResponder];

(将其显示为键盘动画)。

然后,您可以创建一个 pickerDoneClicked 方法(在点击 Done 时调用)以在您的 pickerview 上调用 resignFirstResponder(以将其动画化):

-(void) pickerDoneClicked 
[_pickerView resignFirstResponder];

【讨论】:

【参考方案2】:

只需在 IBAction 方法下方添加并调用 removefromsuperview 方法,

-(void)pickerDoneClicked
[self.pickerView removeFromSuperview];

因为你每次都在重新添加,你可以直接从superview中删除,然后重新添加。

【讨论】:

我将如何以编程方式进行 我编辑了我的答案,请在您的代码中使用该函数。它与您在 barButtonDone 点击事件中给出的名称相同。【参考方案3】:

使用选择器视图选择值后,您可以实现此方法。添加带有完成按钮的工具栏并为完成按钮执行操作

- (IBAction)doneClicked:(id)sender 
 [yourTextfield resignFirstResponder];

在用拾取器作为输入选择到文本字段的值时使用此方法。

【讨论】:

【参考方案4】:
- (void)viewDidLoad 

  self.pickerView = [[UIPickerView alloc] initWithFrame:CGRectMake(0, 0, 330, 200)];
  self.pickerView.delegate = self;
  self.pickerView.dataSource = self;
  self.pickerView.backgroundColor =[UIColor whiteColor];

 [self.view addSubview:self.pickerView];

   UIToolbar *toolBar= [[UIToolbar alloc] initWithFrame:CGRectMake(0,0,320,44)];
  [toolBar setBarStyle:UIBarStyleBlackOpaque];
 UIBarButtonItem *barButtonDone = [[UIBarButtonItem alloc] initWithTitle:@"Done"
                                                                 style: UIBarButtonItemStylePlain
                                                                target:self
                                                                action:@selector(pickerDoneClicked:)];
   UIBarButtonItem *flex = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil];

        toolBar.items = @[flex, barButtonDone];
       barButtonDone.tintColor = [UIColor lightGrayColor];
     [self.view addSubview:toolBar];


   


-(IBAction)pickerDoneClicked:(id)sender
  
         pickerView.hidden = YES;

   

【讨论】:

【参考方案5】:

在 didiSelectRow 方法里面添加这行代码:

self.view.endEditing(true)

【讨论】:

以上是关于如何以编程方式在按钮点击时隐藏 UIPickerview?的主要内容,如果未能解决你的问题,请参考以下文章

显示/隐藏片段并以编程方式更改可见性属性

c#我怎么能以编程方式隐藏水晶“SubReport”?

jQuery:如何以编程方式隐藏 TableTools 按钮

无法隐藏以编程方式创建的 UIButton

以编程方式创建与点击按钮关联的标签

如何在 iOS 8 中以编程方式隐藏状态栏 [重复]