Je suis nouveau en Swift et j'essaye de faire UIAlertContoller
avec PickerView
mais j'ai des problèmes avec les Buttones, Voici une photo
J'essaie de changer la contrainte des boutons pour rester en place. J'ai lu beaucoup de réponses ici mais je n'ai trouvé aucune solution
Voici mon code:
func distance(){
let editRadiusAlert = UIAlertController(title: "Choose distance", message: "", preferredStyle: UIAlertControllerStyle.alert)
let pickeViewFrame: CGRect = CGRect(x: 0, y: 0, width: 250, height: 300)
let pickerViewRadius: UIPickerView = UIPickerView(frame: pickeViewFrame)
pickerViewRadius.delegate = self
pickerViewRadius.dataSource = self
editRadiusAlert.view.addSubview(pickerViewRadius)
editRadiusAlert.addAction(UIAlertAction(title: "Done", style: UIAlertActionStyle.default,handler:nil))
editRadiusAlert.addAction(UIAlertAction(title: "Cancel", style: UIAlertActionStyle.cancel, handler: nil))
editRadiusAlert.view.addConstraint(NSLayoutConstraint(item: editRadiusAlert.view, attribute: NSLayoutAttribute.height, relatedBy: NSLayoutRelation.equal, toItem: nil, attribute: NSLayoutAttribute.notAnAttribute, multiplier: 1, constant: self.view.frame.height * 0.5))
self.present(editRadiusAlert, animated: true, completion: nil)
}
Au lieu d'ajouter pickerView
comme sous-vue, essayez de définir contentViewController
de UIAlertController
comme ceci.
let vc = UIViewController()
vc.preferredContentSize = CGSize(width: 250,height: 300)
let pickerView = UIPickerView(frame: CGRect(x: 0, y: 0, width: 250, height: 300))
pickerView.delegate = self
pickerView.dataSource = self
vc.view.addSubview(pickerView)
let editRadiusAlert = UIAlertController(title: "Choose distance", message: "", preferredStyle: UIAlertControllerStyle.alert)
editRadiusAlert.setValue(vc, forKey: "contentViewController")
editRadiusAlert.addAction(UIAlertAction(title: "Done", style: .default, handler: nil))
editRadiusAlert.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler: nil))
self.present(editRadiusAlert, animated: true)
C'est comme ci-dessous.