Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

swift UIAlertController with pickerView button action stay up

Tags:

I am new in swift and I am trying to make UIAlertContoller with PickerView but I have problems with the Buttones, Here a photo

enter image description here

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) }  
like image 346
Sahar Vanunu Avatar asked Oct 22 '16 09:10

Sahar Vanunu


1 Answers

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.

enter image description here

like image 167
Nirav D Avatar answered Oct 26 '22 23:10

Nirav D