如何以编程方式在点击按钮时隐藏UIPicker视图



我在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)

最新更新