我已将ViewController()
设为sharedInstance
。当我尝试从另一个视图触发函数时,共享函数返回
致命错误:在解包可选值时意外发现nil
我不明白为什么使用sharedInstance
给我一个错误,如果我从`ViewController'中调用该函数
class ViewController: UIViewController {
static let sharedInstance = ViewController()
@IBOutlet weak var playBtn: UIButton!
///
///
func audioPlayerIsNotPlaying() {
print("stop") //runs
playBtn.selected = false //fatal error: nil
playBtn.setImage(UIImage(named: "playBtn.png"), forState: UIControlState.Normal ) //fatal error: nil
}
}
第二视图控制器:
ViewController.sharedInstance.audioPlayerIsNotPlaying()
为什么playBtn
按钮对象正在返回nil
?
答案 0 :(得分:2)
以编程方式创建的视图不会设置插座。您需要从笔尖或故事板创建实例。
答案 1 :(得分:1)
为了连接视图控制器的出口,您必须通过故事板(或NIB)对其进行实例化。例如,如果您要尝试对视图控制器进行static
引用,则可以执行以下操作:
static let sharedInstance = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("identifier")
否则网点将为nil
。