我是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
如果我要求打印功能("测试")而不是更改按钮标题,那就完全正常了。当我尝试从同一个常规视图控制器调用该函数时,没有错误,按钮更改文本。
答案 0 :(得分:1)
崩溃的原因是这一行:
ViewController().testFunction()
您所做的就是创建一个全新的ViewController实例,并调用一个方法来处理其中一个属性。现在,我们可以安全地假设您的button1
是您在Interface Builder中创建的按钮 - 因此在您尝试访问它时它不存在。
你应该做的是在一些已经存在的ViewController实例上调用这个方法,而不是创建一个全新的实例(无论如何它都没有多大意义 - 它不在导航堆栈中,它只存在于didSelectRowAt
)