一旦用户选择了所有行,就会解雇UIPickerView

时间:2013-07-17 09:29:22

标签: ios uipickerview

我有一个带有2个组件的UIPickerView,用户可以在其中选择字体和字体大小。

一旦用户选择了这两个视图,我想解除该视图。

我可以使用didSelectRow:inComponent方法以某种方式执行此操作吗?

3 个答案:

答案 0 :(得分:2)

是的,如果您记录提供给该方法的component,那么当您的所有组件都进行了选择后,您可以解雇。

请注意,用户可能不太喜欢它,并且使用完成按钮在选择器上方添加工具栏可能会更好。


我建议创建一个容器视图来保存选择器和工具栏(子视图),然后使用您喜欢的任何动画显示/隐藏容器视图(而不是当前显示选择器视图的位置)。拾取器和工具栏不需要以任何方式链接,只需在容器中很好地布局。

答案 1 :(得分:0)

我希望它能帮到你

     UIActionSheet *action = [[UIActionSheet alloc] init];
    action.actionSheetStyle = UIActionSheetStyleBlackTranslucent;
    UIPickerView *pickerFromage=[[UIPickerView alloc]initWithFrame:CGRectMake(0, 44, 0 , 0)];
    UIToolbar *pickerAgeToolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
    pickerAgeToolbar.barStyle = UIBarStyleBlackOpaque;
    [pickerAgeToolbar sizeToFit];
    NSMutableArray *barItems = [[NSMutableArray alloc] init];
    UIBarButtonItem *flexSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil];
    [barItems addObject:flexSpace];

    UIBarButtonItem *doneBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(PickerDoneClick)];
    [doneBtn setTintColor:[UIColor blackColor]];
    [barItems addObject:doneBtn];

    [pickerAgeToolbar setItems:barItems animated:YES];
    pickerFromage.delegate=self;
    pickerFromage.dataSource=self;
    pickerFromage.tag=value;
    pickerFromage.showsSelectionIndicator=YES;

    [action addSubview:pickerAgeToolbar];
    [action addSubview:pickerFromage];
    [action showInView:self.view];
    [action setBounds:CGRectMake(0,0, 320, 464)];`


     -(void)PickerDoneClick{
        [action dismissWithClickedButtonIndex:0 animated:YES];
            action=nil;

}

答案 2 :(得分:0)

你可以这样做:

在xib中获取UIView,然后在其上添加UIPickerView和带有UIButton的工具栏。将委托给UIPickerView并将操作分配给UIButton。在你的实现文件(即.m文件)中找到UIView的出口。隐藏UIView并将框架指定到屏幕底部。假设您已将视图命名为myPickerView。

myPickerView.frame = CGRectMake(CGRectGetMinX(self.view.bounds),
CGRectGetMaxY(self.view.bounds),
CGRectGetWidth(myPickerView.frame),
CGRectGetHeight(myPickerView.frame));

myPickerView.hidden = YES;

执行此操作后,您可以通过在动画块中再次设置帧来从下到上为视图设置动画,也可以取消隐藏。

按完成后,再次为视图设置动画并按上图设置框架。

以下是动画的代码

- (IBAction)showPicker:(UIButton *)sender {

self.myPickerView.hidden = NO;
[UIView animateWithDuration:0.5 animations:^{
[self.myPickerView setFrame:CGRectMake(0, 
100, 
CGRectGetWidth(self.myPickerView.frame), 
CGRectGetHeight(self.myPickerView.frame))];

}];
}

完成按钮的操作:

-(IBAction)doneClicked:(id)sender {

self.myPickerView.hidden = NO;
[UIView animateWithDuration:0.5 animations:^{
    [self.myPickerView setFrame:CGRectMake(CGRectGetMinX(self.view.bounds),
                                           CGRectGetMaxY(self.view.bounds),
                                           CGRectGetWidth(self.myPickerView.frame),
                                           CGRectGetHeight(self.myPickerView.frame))];

}];

}

希望这有帮助。