线程1:致命错误:意外发现nil,同时隐式打开swift的Optional值

我在从其他viewController的viewController中执行功能时遇到问题

我有两个视图控制器,一个叫做

var RandomPeople = <?php echo json_encode($rows); ?>

和其他

ubicacionContainerViewController

所以我想从ubicacionContainerViewController调用reservaViewController中的函数

所以在ReservaViewController 中,我有以下代码:

ubicacionContainerViewController

我使用上面的代码在ReservaViewController中调用了一个函数,一切正常,它被称为

但是现在let storyboard: uistoryboard = uistoryboard.init(name: "Main",bundle: nil) let reservaViewController: ReservaViewController = storyboard.instantiateViewController(withIdentifier: "ReservaViewController") as! ReservaViewController reservaViewController.cambiarContainer() 中有这些按钮

ReservaViewController

和此功能:

 @IBOutlet weak var btnSelectUbicacion: UIButton!
 @IBOutlet weak var btnSelectServicio: UIButton!
 @IBOutlet weak var btnSelectHora: UIButton!
 @IBOutlet weak var btnconfirmacionReserva: UIButton!

问题是当我按下func cambiarContainer() { self.btnSelectUbicacion.setBackgroundImage(#imageLiteral(resourceName: "fondo_transparente"),for: .normal) // here is the error self.btnSelectServicio.setBackgroundImage(nil,for: .normal) self.btnSelectHora.setBackgroundImage(#imageLiteral(resourceName: "fondo_transparente"),for: .normal) self.btnconfirmacionReserva.setBackgroundImage(#imageLiteral(resourceName: "fondo_transparente"),for: .normal) } 中的一个按钮来调用时出现该错误。

我尝试使用“?”

ubicacionContainerViewController

现在一切正常,但一切正常,但问题是按钮的背景图像不起作用。没什么改变。

tanxueli 回答:线程1:致命错误:意外发现nil,同时隐式打开swift的Optional值

您致电cambiarContainer时,插座尚未连接,因此代码崩溃。

删除

reservaViewController.cambiarContainer() 

并移动代码以将UI修改为viewDidLoad

func viewDidLoad() {
   super.viewDidLoad() 
   self.btnSelectUbicacion.setBackgroundImage(#imageLiteral(resourceName: "fondo_transparente"),for: .normal) // here is the error
   self.btnSelectServicio.setBackgroundImage(nil,for: .normal)
   self.btnSelectHora.setBackgroundImage(#imageLiteral(resourceName: "fondo_transparente"),for: .normal)
   self.btnConfirmacionReserva.setBackgroundImage(#imageLiteral(resourceName: "fondo_transparente"),for: .normal)
}
,

这里的问题是,您已经实例化了 ReservaViewController ,但尚未加载其视图,并且 cambiarContainer 方法调用了一个或多个(当前控制器插座);这就是为什么它向您指出引用为零。

通过添加以下行,尝试在调用 cambiarContainer 方法之前加载视图:

_ = reservaViewController.view
本文链接:https://www.f2er.com/3150003.html

大家都在问