0

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

一旦用户选择了两者,我想关闭视图。

我可以使用该didSelectRow:inComponent方法以某种方式做到这一点吗?

4

3 回答 3

2

是的,如果您记录component提供给该方法的内容,那么当您的所有组件都进行了选择时,您可以关闭。

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


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

于 2013-07-17T09:33:40.867 回答
0

你可以这样做:

在 xib 中获取一个 UIView,然后添加一个 UIPickerView 和一个带有 UIButton 的工具栏。将委托交给 UIPickerView 并将操作分配给 UIButton。取一个 UIView 的出口和你的实现文件(即 .m 文件)。隐藏 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))];

}];

}

希望这可以帮助。

于 2013-07-17T10:29:52.827 回答
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;

}
于 2013-07-17T09:37:37.243 回答