如何在swift中从一个类访问IBOutlet到其他类

时间:2017-09-06 06:18:24

标签: ios swift swift3

我正在尝试从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!
}

请告诉我这里做错了什么。

1 个答案:

答案 0 :(得分:0)

据我了解,您已使用此行创建了AUIViewController)的新实例。

var obj=A()

此初始值设定项不会从“接口”构建器加载实例。 因此,此处的IBOutletsnil,即datePickernil

当对按钮执行操作时,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

    }
 }