Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 从另一个ViewController调用函数时发现错误_Ios_Swift_Function - Fatal编程技术网

Ios 从另一个ViewController调用函数时发现错误

Ios 从另一个ViewController调用函数时发现错误,ios,swift,function,Ios,Swift,Function,我试图从另一个ViewController调用函数,但每次尝试调用时都会向我发送一个错误::在展开可选值时意外发现nil 我使用的代码是这样的 FirstViewController one: func showup(){ runoutbut.hidden = false } 我用这个函数从另一个ViewController调用它: func go(){ FirstViewController().showup() } 每次我激活它。。。程序向我发送此错误。。

我试图从另一个ViewController调用函数,但每次尝试调用时都会向我发送一个错误::在展开可选值时意外发现nil

我使用的代码是这样的

    FirstViewController one:

   func showup(){
     runoutbut.hidden = false
}
我用这个函数从另一个ViewController调用它:

func go(){
   FirstViewController().showup()
}
每次我激活它。。。程序向我发送此错误。。。“在展开可选值时意外发现nil”


你知道我该怎么修吗?先谢谢你

如果您想直接创建静态方法,那么直接用类名调用它

  FirstViewController one:

  static func showup(){
     runoutbut.hidden = false
}

签入“类型方法”部分,您需要将您的方法设置为类型方法,或者如果您希望将其设置为类型方法,则需要获取对FirstViewController现有实例的引用。

您需要对现有的
FirstViewController
实例的引用,而不是创建新实例。使用协议/委托模式或通过序列传递。您的
runoutbut
按钮是
FirstViewController
的一部分。该按钮在视图加载时加载。由于
FirstViewController
的视图未加载,因此按钮也未加载,因此将为nilth
runout,但是
显然是一个实例变量或Outlet也应该是静态的。使用静态方法来避免编写协议和适当的委托方法不是好的编程习惯。你是对的,我只展示了一种编程方法,有很多种