Swift3 在UIAlertView中设置TextField和PickerView

Swift3 在UIAlertView中设置TextField和PickerView,swift3,xcode8.2,Swift3,Xcode8.2,我想用textfield和picker视图创建一个警报。 我想在顶部显示选择器视图,然后在选择器视图下面的文本字段 这是我的密码 let alert = UIAlertController(title: "Create Meditation", message: "myMsg", preferredStyle: .alert) alert.view.addSubview(pickerView) alert.addTextField { (textField) in textField.te

我想用textfield和picker视图创建一个警报。 我想在顶部显示选择器视图,然后在选择器视图下面的文本字段

这是我的密码

let alert = UIAlertController(title: "Create Meditation", message: "myMsg", preferredStyle: .alert)

alert.view.addSubview(pickerView)

alert.addTextField { (textField) in
textField.text = "Enter Message"

}


let action = UIAlertAction(title: "Send", style: .default) { (action) in
    let textField = alert.textFields

    print(textField)

            }
let action2 = UIAlertAction(title: "Cancel", style: .cancel, handler: nil)

alert.addAction(action)
alert.addAction(action2)

let height:NSLayoutConstraint = NSLayoutConstraint(item: alert.view, attribute: NSLayoutAttribute.height, relatedBy: NSLayoutRelation.equal, toItem: nil, attribute: NSLayoutAttribute.notAnAttribute, multiplier: 1, constant: self.view.frame.height * 0.50)
    alert.view.addConstraint(height);

self.present(alert, animated: true, completion: nil)

您不能使用
UIAlertController
,因为除了文本字段之外,它没有添加视图的选项。 因此,您必须编写自己的控件,它将模拟
UIAlertController
。 您可以编写视图控制器并以模式显示它,也可以创建视图并将其添加到控制器视图中。
此外,最好尝试在或上找到就绪组件,并根据需要对其进行修改。

您应该创建一个uiviewcontroller,并赋予它这种效果

例如:在下一个图像中,我创建了一个视图作为模态。它是一个带有灰色视图的uiviewcontroller(在您的情况下,应该在灰色视图中放置UIExtField和uipickerview)。然后,我将序列图像板segue配置为modally present,并在uiviewcontroller put中提供该模式的效果:

self.view.backgroundColor = UIColor.black.withAlphaComponent(0.8)


试试这些豆荚,希望对你有帮助


您可以使用以下代码:

 let alertView = UIAlertController(
            title: "Select",
            message: "\n\n\n\n\n\n\n\n\n",
            preferredStyle: .alert)

        let pickerView = UIPickerView(frame:
            CGRect(x: 0, y: 50, width: 260, height: 162))
        pickerView.dataSource = self
        pickerView.delegate = self
        pickerView.backgroundColor = UIColor.lightGray.withAlphaComponent(0.5)

        alertView.view.addSubview(pickerView)
        alertView.addTextField(configurationHandler: configurationTextField)
        alertView.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler:nil))
        alertView.addAction(UIAlertAction(title: "Ok", style: .default, handler:{ (UIAlertAction) in
            guard let text = self.textField?.text else {return}
            print(text)
        }))
        present(alertView, animated: true, completion: {
            pickerView.frame.size.width = alertView.view.frame.size.width
        })