swift UIAlertController with pickerView button action stay up

swift, swift3, uialertcontroller, uipickerview, xcode

Solution

Instead of adding `pickerView` as subview try to set `contentViewController` of `UIAlertController` like this.

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)

It's looks like below.

Problem

I am new in swift and I am trying to make `UIAlertContoller` with `PickerView` but I have problems with the Buttones, Here a photo I am trying to change the constraint of the buttons to stay up. I read a lot of answers here but I did not find any solution Here is my 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) } ```

Original source