我想使用UIPickerView更改另一个ViewController上的标签。这意味着在另一堂课。我该怎么做?代码看起来如何?我认为我的问题很容易解决,但是对于这种编程语言我还是很陌生。
我已经尝试了几种方法,但是没有任何效果。
答案 0 :(得分:0)
您可以使用代理或通知。 对于此类情况,首选委托。这是一个例子:
这是保存选择器的类(假设您有一个表示选择器内容的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!
}
}