Вы можете использовать делегатов или уведомления.Делегат предпочтителен для подобных случаев.Вот пример:
Это класс, который содержит средство выбора (при условии, что у вас есть массив values
, представляющий содержимое вашего средства выбора):
protocol PickerControllerDelegate: class {
func pickerControllerDidChangeValue(value: String?)
}
class PickerViewController: UIViewController, UIPickerViewDelegate {
var values: [String] = []
weak var delegate: PickerControllerDelegate?
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
let value = self.values[row] as? String
self.delegate.pickerControllerDidChangeValue(value: value)
}
}
И это другойViewController
, который слушает изменения в сборщике:
class OtherViewController: UIViewController, PickerControllerDelegate {
override viewDidLoad() {
super.viewDidLoad()
let instanceOfPickerViewContoller = PickerViewController()
instanceOfPickerViewContoller.delegate = self
}
// MARK - PickerViewController Delegate
func pickerControllerDidChangeValue(value: String?) {
// Now you have the new value!
}
}