如何在UIView类中编写自定义选择器的代码?

时间:2015-12-21 14:33:53

标签: ios swift uiview uipickerview

我想编写一个视图(弹出窗口),其中包含两个选择器,以便输入几周(年)和两年的两个独立选择器视图。首先,我开始创建一个新类作为UIView的子类。接下来,我编写了窗口,它应该弹出,以防它被调用。 现在我遇到了问题,我无法用数据填充我的两个选择器视图,因为UIView不支持UIPickerViewDataSource。 我怎么能解决这个问题,因为我只想把它显示为一个小弹出窗口而不是打开一个完整的UIViewController。

1 个答案:

答案 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
    }
}