UIPickerView 将数据传递给容器视图
UIPickerView passing data to Container View
我查看了 StacksOverflow 上的一些容器视图问题,但 none 使用选择器视图将数据传递到容器视图中的表视图单元格。我试过使用:
func pickerView( _ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "containerSettingsSegue" {
let destination = segue.destination as! SettingsTableViewController
destination.delegate = self
destination.languageDetail.text = myPickerData[row]
}
}
}
还有
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "containerSettingsSegue" {
let destination = segue.destination as! SettingsTableViewController
destination.delegate = self
}
}
以上两个代码都在我的父视图中。
但是,它不起作用。有什么办法可以做到吗?
感谢@TBlank 的回答
所以根据他的回答代码应该如下所示:
在 SettingsViewController
中声明 SettingsTableViewController
的实例,例如:
var childView : SettingsTableViewController?
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "containerSettingsSegue" {
childView = segue.destination as? SettingsTableViewController
childView!.delegate = self
}
}
func pickerView( _ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
childView?.changeLabel(text: myPickerData[row])
}
所以现在在 SettingsTableViewController
中声明一个方法,如下所示
func changeLabel(text: String) {
languageDetail.text = text
}
我查看了 StacksOverflow 上的一些容器视图问题,但 none 使用选择器视图将数据传递到容器视图中的表视图单元格。我试过使用:
func pickerView( _ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "containerSettingsSegue" {
let destination = segue.destination as! SettingsTableViewController
destination.delegate = self
destination.languageDetail.text = myPickerData[row]
}
}
}
还有
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "containerSettingsSegue" {
let destination = segue.destination as! SettingsTableViewController
destination.delegate = self
}
}
以上两个代码都在我的父视图中。
但是,它不起作用。有什么办法可以做到吗?
感谢@TBlank 的回答
所以根据他的回答代码应该如下所示:
在 SettingsViewController
中声明 SettingsTableViewController
的实例,例如:
var childView : SettingsTableViewController?
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "containerSettingsSegue" {
childView = segue.destination as? SettingsTableViewController
childView!.delegate = self
}
}
func pickerView( _ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
childView?.changeLabel(text: myPickerData[row])
}
所以现在在 SettingsTableViewController
中声明一个方法,如下所示
func changeLabel(text: String) {
languageDetail.text = text
}