【问题标题】:How to code customized pickers in a class of UIView?如何在 UIView 类中编写自定义选择器?
【发布时间】:2015-12-21 14:33:52
【问题描述】:

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

【问题讨论】:

    标签: ios swift uiview uipickerview


    【解决方案1】:

    它应该是一个控制器,显示在弹出窗口中。

    presenter 应该是 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
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2016-08-25
      • 2014-08-11
      • 1970-01-01
      • 2012-03-08
      • 1970-01-01
      • 1970-01-01
      • 2011-12-23
      • 1970-01-01
      • 2014-02-03
      相关资源
      最近更新 更多