Как я могу изменить метку в другом классе с UIPickerView - PullRequest
0 голосов
/ 24 июня 2019

Я хочу использовать UIPickerView, чтобы изменить метку на другом ViewController.Это означает, что в другом классе.Как мне это сделать?Как может выглядеть код?Я думаю, что мою проблему легко решить, но я совсем новичок в этом языке программирования.

Я уже пробовал несколько вещей, но ничего не помогло.

1 Ответ

0 голосов
/ 24 июня 2019

Вы можете использовать делегатов или уведомления.Делегат предпочтителен для подобных случаев.Вот пример:

Это класс, который содержит средство выбора (при условии, что у вас есть массив 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!
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...