我需要一种允许用户从列表中选择选项的方法,我正在考虑在UIAlertView
中使用UIPickerView
。然而,我想知道是否:
- 在
iOS 5
中,可以很容易地将UIPickerView
放入UIAlertView
中(如果是这样,苹果会反对吗?应用程序会被拒绝吗?) - 有更好的方法吗?(如果是,怎么办?)
如有任何帮助或建议,我们将不胜感激!
如果要在屏幕上选择要放入文本字段的值,只需让选择器查看文本字段的inputView
即可。然后它会像键盘一样为你设置动画。
您也可能希望添加一个工具栏作为inputAccessoryView
,上面有完成、下一步等按钮。
使选取器视图成为输入视图非常简单。在viewDidLoad方法中,创建picket视图,将其数据源和委托设置为正常,然后将其分配给文本字段的输入视图属性:
myTextField.inputView = myPicker;
在选取器视图委派方法中,当选取器的选择发生更改时,可以使用选定的值更新文本字段。在文本字段委派方法中,您可以确保尖桩在出现之前选择了正确的值(willBeginEditing?(猜测,不是在mac ATM上))。
附件视图可以只是一个UIToolbar,其中包含一个done项,该项告诉文本字段放弃第一响应者状态。再次设置并在viewDidLoad中分配它。
添加UIPickerView
作为UIAlertView
的子视图当然是可能的,我怀疑苹果会因此拒绝你的应用程序,但我认为这会导致糟糕的UI。为什么不创建一个新的UIViewController
子类来包含UIPickerView
并以模式呈现它呢?这是一种更常见的交互模式。
如果您有2-3个选择,请将几个按钮放在其他按钮标题之后的UIAlertView中:。如果您有更多的选择,您肯定需要构建新的视图控制器。甚至不要尝试将选取器视图添加到UIAlertView中。
1)我相信,您可以在任何iOS SDK版本中轻松做到这一点。由于UIAlertViews
基本上是UIViews
的子类,您可以简单地使用addSubview:
2) 这取决于选项列表的上下文。对于生日、日期或时间等选择,苹果使用了一个单独的UIViewController
,其中包含UITableView
(一行)和UIPickerView
。如果不是以上三种,苹果通常会使用UITableView
,在用户的选择旁边打一个复选标记。
不管怎样,我想每个人似乎都同意你应该拿出第二页的选项列表。