在 UIPickerView Swift 中获取工作工具栏

Posted

技术标签:

【中文标题】在 UIPickerView Swift 中获取工作工具栏【英文标题】:Get a working toolbar in a UIPickerView Swift 【发布时间】:2018-04-04 21:04:32 【问题描述】:

所以我有一个使用pickerview 的文本字段。但出于某种原因,从 ios 11.x 开始,它似乎没有出现。我似乎无法弄清楚为什么。我查看了其他一些问题,似乎我的实现是相同的,但是工具栏在加载选择器视图时没有出现。 下面是我为pickerview声明和设置工具栏的代码:

let picker: UIPickerView
    picker = UIPickerView(frame: CGRect(x: 0, y: 200, width: view.frame.width, height: 300))



    picker.showsSelectionIndicator = true
    picker.delegate = self
    picker.dataSource = self


    let toolBar = UIToolbar()
    toolBar.barStyle = UIBarStyle.default
    toolBar.isTranslucent = false
    toolBar.tintColor = UIColor(red: 76/255, green: 217/255, blue: 100/255, alpha: 1)
    toolBar.sizeToFit()


    let doneButton = UIBarButtonItem(title: "Done", style: UIBarButtonItemStyle.plain, target: self, action: #selector(UploadViewController.donePicker))
    let spaceButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.flexibleSpace, target: nil, action: nil)

    toolBar.setItems([spaceButton, doneButton], animated: false)
    toolBar.isUserInteractionEnabled = true

    requestTextField.inputView = picker
    requestTextField.inputAccessoryView = toolBar

【问题讨论】:

如果你要在工具栏上调用sizeToFit,请在设置好它的项目后进行。 @KSigWyatt 谢谢,就是这样。如果您将此作为答案,我将选择它作为正确答案。 @aegeus24 很高兴听到! 【参考方案1】:

您需要确保声明translatesAutoresizingMaskIntoConstraints = false,否则您设置的任何约束都将不起作用。

而且看起来你没有任何限制。但在您向视图添加约束之前,请确保将视图添加到父视图 - 如果这不是通过情节提要或使用 view.addSubView(picker) 完成的,那么约束将导致您的应用程序崩溃。

使用此示例为您的视图添加约束。 picker.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor)

此外,使用view.leadingAnchor 作为左侧约束,使用view.trailingAnchor 作为右侧而不是view.frame.width 作为UIPicker 的宽度

【讨论】:

以上是关于在 UIPickerView Swift 中获取工作工具栏的主要内容,如果未能解决你的问题,请参考以下文章

如何在 UIPickerview iOS swift 中为组件赋予标题

ios swift 2如何用json数据填充uipickerview [重复]

Swift 3:滚动视图中的 UIPickerView

Swift3.0 UIPickerView的使用

无法在 SWIFT 中使用 UipickerView 委派文本字段

UIPickerView 在 Swift 中选择 title == String 的行