Swift3 在UIAlertView中设置TextField和PickerView
我想用textfield和picker视图创建一个警报。 我想在顶部显示选择器视图,然后在选择器视图下面的文本字段 这是我的密码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
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
})