如何在表视图上方显示UIPicker?

时间:2011-03-28 23:57:05

标签: iphone ios4 iphone-sdk-3.0

我有一个视图控制器,它从一个nib文件实现一个表视图,它的视图出口直接连接到Interface Builder中的表视图。

在某些情况下,我要做的是将UIDatePicker从屏幕底部滑入视图,允许用户进行选择,然后将其向下滑动。

我已经让选择器滑入屏幕但是我的问题是因为我需要将它添加为像这样的子视图,[self.view addSubview:pickerContainer];正在发生的事情是选择器被添加到表视图中每当我尝试更改它的值时,整个选择器就会随桌子一起上下滑动。

如何在表格视图上方显示DatePicker?

2 个答案:

答案 0 :(得分:1)

听起来你应该以模态方式呈现它。

[pickerContainer setModalPresentationStyle:UIModalPresentationCurrentContext];
[self presentModalViewController:pickerContainer animated:YES];

并调出一个完成/选择/等按钮来执行此操作:

[self dismissModalViewControllerAnimated:YES];

编辑:另一个选项是让父UIViewController同时具有表格视图和另一个隐藏视图。将隐藏的视图放在屏幕底部(分层放在桌面视图的顶部),确保控件开始禁用,然后调用:

[UIView animateWithDuration:1.0 /* set number of seconds it takes to slide here */
 animations:^
 {
     [pickerContainer setFrame:/*the position you want it to slide in to*/];
 }
 completion:^(BOOL finished)
 {
     [pickerContainer.picker setEnabled:YES]; // only enabled once the animation is done
     [pickerContainer.doneButton setEnabled:YES]; // same for the button to close the view
 }];

当用户表示他们已完成选择日期时,请使用setFrame:再次动画回到视图的原始位置以将其滑出,并禁用控件。

答案 1 :(得分:0)

从iOS 3.2开始,您可以将inputView的{​​{1}}属性设置为UITextField。这会将键盘替换为您应用于UIPickerView的视图,并在该textField成为firstResponder时显示此视图。