Как написать средство выбора номеров Swift в контроллере предупреждений, например Android

Как создать средство выбора чисел с минимумом и максимумом, определенным переменной?

В моем приложении для Android я создал AlertDialog с номером средства выбора, и максимальное число связано со значением из моей базы данных.

Можно ли сделать то же самое в Swift или что-то близкое к этому?

Мой код контроллера предупреждений:

func createAlertCarte1(Title:String, Message:String) {
        let alertCarte1 = UIAlertController(title: Title, message: Message, preferredStyle: UIAlertController.Style.alert)
        alertCarte1.addAction(UIAlertAction.init(title: "Ok", style: UIAlertAction.Style.default, handler: { (action1) in
            alertCarte1.dismiss(animated: true, completion: nil)
            self.displayAd()
        }))
        alertCarte1.addAction(UIAlertAction.init(title: "Annuler", style: UIAlertAction.Style.cancel, handler: { (action1) in
            alertCarte1.dismiss(animated: true, completion: nil)
        }))

        self.present(alertCarte1, animated: true, completion: nil)

    }

person Victor Appercé    schedule 10.05.2020    source источник
comment
Отвечает ли это на ваш вопрос? Как добавить UIPickerView в UIAlertController?   -  person rbaldwin    schedule 10.05.2020
comment
@rbaldwin Да, это может быть мне полезно, но в основном я ищу способ определить максимальное количество NumberPicker с помощью переменной.   -  person Victor Appercé    schedule 10.05.2020


Ответы (1)


import UIKit

class ViewController: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate {

    var pickerView: UIPickerView!
    var pickerData: [Int]!

    override func viewDidLoad() {
        super.viewDidLoad()
        pickerView = UIPickerView(frame: CGRect(x: 10, y: 50, width: 250, height: 150))
        pickerView.delegate = self
        pickerView.dataSource = self

        // This is where you can set your min/max values
        let minNum = 1
        let maxNum = 10
        pickerData = Array(stride(from: minNum, to: maxNum + 1, by: 1))
    }

    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        showAlert()
    }

    func showAlert() {
        let ac = UIAlertController(title: "Picker", message: "\n\n\n\n\n\n\n\n\n\n", preferredStyle: .alert)
        ac.view.addSubview(pickerView)
        ac.addAction(UIAlertAction(title: "OK", style: .default, handler: { _ in
            let pickerValue = self.pickerData[self.pickerView.selectedRow(inComponent: 0)]
            print("Picker value: \(pickerValue) was selected")
        }))
        ac.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler: nil))
        present(ac, animated: true)
    }

    func numberOfComponents(in pickerView: UIPickerView) -> Int {
        return 1
    }

    func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
        return pickerData.count
    }

    func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
        return "\(pickerData[row])"
    }
}

введите описание изображения здесь

person rbaldwin    schedule 10.05.2020
comment
О, спасибо большое, я не просил так много! :) но у меня есть последний вопрос, для (сообщение :) что такое \ n для? - person Victor Appercé; 10.05.2020
comment
\n - новая строка. Это хак, чтобы создать место для средства выбора, добавив пустые строки. Там может быть лучший способ сделать это. - person rbaldwin; 10.05.2020