UIPickerView 将数据传递给容器视图
Posted
技术标签:
【中文标题】UIPickerView 将数据传递给容器视图【英文标题】:UIPickerView passing data to Container View 【发布时间】:2019-06-10 08:54:19 【问题描述】:我查看了 StacksOverflow 上的一些容器视图问题,但没有一个使用选择器视图将数据传递到容器视图中的 tableview 单元格。我试过使用:
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
以上两个代码都在我的父视图中。
但是,它不起作用。有什么办法可以做到吗?
【问题讨论】:
【参考方案1】:感谢@TBlank 的回答https://***.com/a/34349405/1142743
所以按照他的回答代码应该如下:
在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
【讨论】:
我声明了一个 var selectedRow = 0,其余的如下,但它崩溃了......说“线程 1:致命错误:在隐式展开可选值时意外发现 nil” 它在'destination.languageDetail.text = myPickerData[selectedRow]'的行和languageDetail中崩溃,在SettingsTableViewController的viewdidload中,我将它设置为'English' 已将具体文件发送给您 它是一个容器视图,嵌入其中的是一个tableview 已邮寄给您以上是关于UIPickerView 将数据传递给容器视图的主要内容,如果未能解决你的问题,请参考以下文章