如何以编程方式在按钮点击时隐藏 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?的主要内容,如果未能解决你的问题,请参考以下文章