我正在尝试从SecTableCell类中的类ViewController访问IBOutlet。 但它显示下一个错误:
致命错误:在解包可选值时意外发现nil
import pandas as pd
rowsOfLines = pd.read_table('my_file.txt', header=None)
with open('output_file.txt', 'w+') as file:
for index, row in rowsOfLines.iterrows():
splitLine = row.str.split()[0]
if 'Account-No' in splitLine:
file.write('{} \n'.format(row.to_string(index=False)))
elif 'Amount:' in splitLine:
file.write('{} \n'.format(row.to_string(index=False)))
所以,在这里我想访问其他B类中的datePicker
class A: UIViewController{
@IBOutlet var datePicker: UIDatePicker!
}
请告诉我这里做错了什么。
答案 0 :(得分:0)
据我了解,您已使用此行创建了A
(UIViewController
)的新实例。
var obj=A()
此初始值设定项不会从“接口”构建器加载实例。
因此,此处的IBOutlets
为nil
,即datePicker
为nil
。
当对按钮执行操作时,B
' datePickerAction
会在A
存在的情况下被调用,但它没有加载datePricer
(即此处为零)因此崩溃。
要解决您的问题,您需要在单元格中注入或说出您的A(即此处为self
)
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
//...
cell.obj = self //Injection
//...
}
然后会修改B以接受obj
A
类型的optional
class B:UITableViewCell{
var obj: A?
@IBAction func datePickerAction(_ sender: Any) {
obj?.datePicker.isHidden=false
}
}