我有一个带有 2 个组件的 UIPickerView,用户可以在其中选择字体和字体大小。
一旦用户选择了两者,我想关闭视图。
我可以使用该didSelectRow:inComponent
方法以某种方式做到这一点吗?
我有一个带有 2 个组件的 UIPickerView,用户可以在其中选择字体和字体大小。
一旦用户选择了两者,我想关闭视图。
我可以使用该didSelectRow:inComponent
方法以某种方式做到这一点吗?
是的,如果您记录component
提供给该方法的内容,那么当您的所有组件都进行了选择时,您可以关闭。
请注意,用户可能不太喜欢它,在选择器上方添加一个带有完成按钮的工具栏可能会更好。
我建议创建一个容器视图来保存选择器和工具栏(子视图),然后使用您喜欢的任何动画显示/隐藏容器视图(而不是您当前显示选择器视图的位置)。选择器和工具栏不需要以任何方式链接,只需在容器中很好地布置即可。
你可以这样做:
在 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))];
}];
}
希望这可以帮助。
我希望它会帮助你
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;
}