我在uitablview原型单元格中有一个uipickerivew,我只想在按下完成按钮时隐藏。请帮帮我。
以下是我如何创建uipickerview和done按钮的代码。
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 becomeFirstResponder];
(将其显示为中的键盘动画)。
然后,您可以创建一个pickerDoneClicked方法(当点击Done时调用该方法),以在pickerview上调用辞职FirstResponder(将其动画化):
-(void) pickerDoneClicked {
[_pickerView resignFirstResponder];
}
只需在IBAction方法下面添加并调用removefromsuperview方法,
-(void)pickerDoneClicked{
[self.pickerView removeFromSuperview];}
由于您每次都已经在添加,您可以直接将其从超级视图中删除,然后再添加。
使用picker视图选择一个值后,您可以实现此方法。添加一个带有完成按钮的工具栏,并对完成按钮进行操作
- (IBAction)doneClicked:(id)sender {
[yourTextfield resignFirstResponder];
}
在这种情况下,使用picker作为输入为文本字段选择值时,会使用此方法。
- (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;
}
在didiSelectRow方法中添加以下代码行:
self.view.endEditing(true)