Передача значения переменной из UIPickerView в ViewController в языке программирования Swift может быть выполнена с помощью делегата или замыкания (closure). В следующих строках я расскажу о двух способах реализации этой задачи: с использованием делегата и с использованием замыкания.
1. Использование делегата:
Шаг 1: Создайте протокол, который будет служить делегатом для UIPickerView. Протокол будет содержать один метод, который будет вызываться при выборе определенного значения в UIPickerView. Назовем его, например, PickerDelegate.
protocol PickerDelegate: class { func didSelectValue(_ value: String) }
Шаг 2: В классе ViewController, где у вас есть UIPickerView, добавьте свойство делегата:
class ViewController: UIViewController { weak var delegate: PickerDelegate? // ... }
Шаг 3: В классе ViewController, где у вас есть UIPickerView, найдите метод pickerView(_:didSelectRow:inComponent:) делегата UIPickerViewDelegate и в нем вызовите метод делегата:
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { let selectedValue = // получите значение, выбранное в UIPickerView delegate?.didSelectValue(selectedValue) }
Шаг 4: Теперь в том месте, где вы создаете экземпляр класса ViewController (например, в другом классе или в самом ViewController), установите себя в качестве делегата:
let viewController = ViewController() viewController.delegate = self
Шаг 5: В том месте, где у вас есть экземпляр ViewController и вы хотите получить значение выбранного значения в UIPickerView, реализуйте метод протокола PickerDelegate:
extension YourClass: PickerDelegate { func didSelectValue(_ value: String) { // здесь вы можете использовать значение выбранного значения из UIPickerView } }
2. Использование замыкания (closure):
Шаг 1: В классе, где у вас есть UIPickerView, добавьте свойство замыкания:
class ViewController: UIViewController { var didSelectValue: ((String) -> Void)? // ... }
Шаг 2: В классе ViewController, где у вас есть UIPickerView, найдите метод pickerView(_:didSelectRow:inComponent:) делегата UIPickerViewDelegate и в нем вызовите замыкание:
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { let selectedValue = // получите значение, выбранное в UIPickerView didSelectValue?(selectedValue) }
Шаг 3: Теперь в том месте, где вы создаете экземпляр класса ViewController (например, в другом классе или в самом ViewController), передайте замыкание:
let viewController = ViewController() viewController.didSelectValue = { value in // здесь вы можете использовать значение выбранного значения из UIPickerView }
Теперь вы знаете, как передать значение переменной из UIPickerView в ViewController с помощью делегата или замыкания. Выберите подход, который лучше соответствует вашим потребностям и продолжайте программировать!