从另一个文件调用函数时,应用程序崩溃

时间:2017-07-20 13:48:36

标签: ios swift3 swrevealviewcontroller

我是Swift的新手,所以希望这很简单,但我发现没有任何帮助。

我正在使用SWRevealViewController将侧面菜单添加到我的应用程序中,它基本上在常规视图控制器的一侧创建了一个表视图控制器。当用户点击其中一个单元格时,我希望能够调用常规视图控制器中的函数。

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
  ViewController().testFunction()
}

然后调用函数:

func testFunction() {
    button1.setTitle("TEST", for: .normal)
}

现在,应用程序正确调用此函数,但我留下了错误

fatal error: unexpectedly found nil while unwrapping an Optional value

如果我要求打印功能("测试")而不是更改按钮标题,那就完全正常了。当我尝试从同一个常规视图控制器调用该函数时,没有错误,按钮更改文本。

1 个答案:

答案 0 :(得分:1)

崩溃的原因是这一行:

ViewController().testFunction()

您所做的就是创建一个全新的ViewController实例,并调用一个方法来处理其中一个属性。现在,我们可以安全地假设您的button1是您在Interface Builder中创建的按钮 - 因此在您尝试访问它时它不存在。

你应该做的是在一些已经存在的ViewController实例上调用这个方法,而不是创建一个全新的实例(无论如何它都没有多大意义 - 它不在导航堆栈中,它只存在于didSelectRowAt