Popover + DatePicker swift

Имеется основной ViewController с .popover, представленном в виде DatePicker (прошу прощения если формулировка не верная, надеюсь основная мысль понятна). Выбранная дата передается назад протоколом, меняя при этом название кнопки. Вопрос следующий: как добавить toolbar с кнопками ок и отмена. И как задать конкретное направление для появления .popover (например всегда вниз). Так как на разных устройствах он может появится левее кнопки, правее, выше, или ниже. Подробнее в коде и скринахiphone 11 proMax.iphone 8

//Основной контроллер с popover
`@IBAction func datePickerAction(_ sender: Any) {
        
        guard let datePickerVC = storyboard?.instantiateViewController(identifier: "DatePickerViewController") as? DatePickerViewController else { return }
        datePickerVC.modalPresentationStyle = .popover
        datePickerVC.delegate = self
        let popOverVC = datePickerVC.popoverPresentationController
        popOverVC?.delegate = self
        popOverVC?.sourceView = self.dateButton
        popOverVC?.sourceRect = CGRect(x: self.dateButton.bounds.midX, y: self.dateButton.bounds.maxY, width: 0, height: 0)
        datePickerVC.preferredContentSize = CGSize(width: 250, height: 250)
        
        self.present(datePickerVC, animated: true)
    }
}

extension FuelCarsViewController: DatePickerViewControllerDelegate {
    func transferDate(_ date: String) {
        dateButton.setTitle(date, for: .normal)
        transferDate = date
    }
}`



//Контроллер с DatePicker
import UIKit

protocol DatePickerViewControllerDelegate {
    func transferDate(_ date: String)
}

class DatePickerViewController: BackgroundVC {

    @IBOutlet weak var datePicker: UIDatePicker!
    var delegate: DatePickerViewControllerDelegate?
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        var components = DateComponents()
        components.year = -20
        let minDate = Calendar.current.date(byAdding: components, to: Date())
        datePicker.minimumDate = minDate
        datePicker.maximumDate = NSDate() as Date
        datePicker.datePickerMode = .date
        datePicker.preferredDatePickerStyle = .wheels
        datePicker.setValue(UIColor.white, forKeyPath: "textColor")
        datePicker.setValue(false, forKey: "highlightsToday")
        
        
        let localeID = Locale.preferredLanguages.first
        datePicker.locale = Locale(identifier: localeID!)
        
        datePicker.addTarget(self, action: #selector(dateChanged), for: .valueChanged)
        
    }
    
    @objc func dateChanged(picker: UIDatePicker){
        
        let formatter = DateFormatter()
        formatter.dateFormat = "dd.MM.yyyy"
        let date = formatter.string(from: picker.date)
        delegate?.transferDate(date)
        //dismiss(animated: true, completion: nil)
    }
}

Ответы (0 шт):