我想编写一个视图(弹出窗口),其中包含两个选择器,以便输入几周(年)和两年的两个独立选择器视图。首先,我开始创建一个新类作为UIView的子类。接下来,我编写了窗口,它应该弹出,以防它被调用。 现在我遇到了问题,我无法用数据填充我的两个选择器视图,因为UIView不支持UIPickerViewDataSource。 我怎么能解决这个问题,因为我只想把它显示为一个小弹出窗口而不是打开一个完整的UIViewController。
答案 0 :(得分:0)
它应该是一个控制器,以弹出窗口显示。
演示者应该是UIPopoverPresentationControllerDelegate,并使用重写方法来支持iPhone上的弹出窗口(默认情况下,它们将以模态方式呈现)。
extension ItemViewController: UIPopoverPresentationControllerDelegate {
func adaptivePresentationStyleForPresentationController(controller: UIPresentationController) -> UIModalPresentationStyle {
return .None
}
}
使用此方法显示您的选择器控制器:
func instantiatePicker(picker: UIViewController, sender: UIView) {
picker.modalPresentationStyle = .Popover
let ppc = picker.popoverPresentationController!
ppc.delegate = self
ppc.permittedArrowDirections = .Any
ppc.sourceView = sender
ppc.sourceRect = sender.bounds
presentViewController(picker, animated: true, completion: nil)
}
在你的选择器控制器中覆盖此属性以根据需要调整弹出窗口大小:
override var preferredContentSize: CGSize {
get {
return CGSize(width: datePicker.bounds.width, height: datePicker.bounds.height + anotherPicker.bounds.height)
}
set {
super.preferredContentSize = newValue
}
}