我有一个带有2个组件的UIPickerView,用户可以在其中选择字体和字体大小。
一旦用户选择了这两个视图,我想解除该视图。
我可以使用didSelectRow:inComponent
方法以某种方式执行此操作吗?
答案 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))];
}];
}
希望这有帮助。