【问题标题】:IBOutlet nil - buttonIBOutlet 无 - 按钮
【发布时间】:2018-11-20 06:24:51
【问题描述】:

我有一个 HomeController 和一个 registerController。 HomeController 嵌入在导航控制器中,是根视图控制器。如果我在 HomeController 的 ViewWillAppear 中以模态方式显示 registerController:

let reg = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "signup") as! RegisterController
reg.modalPresentationStyle = UIModalPresentationStyle.overCurrentContext
reg.modalTransitionStyle = UIModalTransitionStyle.flipHorizontal
reg.view.frame = self.view.frame
self.view.addSubview(reg.view)

没有问题。但是,如果我通过将其推送到导航控制器堆栈上来呈现它:

let v = RegisterController()
    self.navigationController?.pushViewController(v, animated: true)

应用程序崩溃并说注册按钮(在 registerController 中)的 IBOutlet 为 nil。我重新创建了插座并清理了项目并重新启动了 xcode,但没有任何效果......

【问题讨论】:

  • 您可以在这里发布您的 viewWillAppear 代码吗?
  • @HPM 代码的第一个 sn-p 是我的 VWA。这是其中唯一的代码
  • 马特回答了你的问题,检查一下

标签: swift uinavigationcontroller uibutton iboutlet


【解决方案1】:

这不是“错误”。你的代码有问题。它与推送与呈现无关。就是这行错了:

let v = RegisterController()

这创建了一个没有连接插座的准系统视图控制器。出口连接在此类的故事板实例中。就像在第一个代码中所做的那样,从情节提要创建视图控制器,一切都会好起来的。

let v = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "signup") as! RegisterController

【讨论】:

  • 感谢您的快速回答,我会试一试。但是我在 HTPController 的同一个文件中使用了相同的代码(let v = HTPController() )并且它按预期工作。它还有一个按钮。这个特定的有什么问题?
  • @user7804097 该按钮可能也未连接。 HTPController 不会崩溃,因为您没有在 viewDidAppearviewDidLoad 中使用该按钮。试着按下那个按钮,它不应该做它应该做的事情。
  • @user7804097 这根本不可能。
  • 感谢大家的解释。这很有意义!我不能再接受 3 分钟
猜你喜欢
  • 2017-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-04
  • 1970-01-01
相关资源
最近更新 更多