Swift:tableViewController中的Uicontrol在ViewController调用时发现了nil



我在情节提要中有两个viewControllers,即ViewController(root)和 TableViewController,它们由推送SEGUE链接。

TableViewController充当应用程序的设置页面,将多个UIControls(例如UISegmentedControlUISwitch)放入其中。这些UIControls通过IBOutlets链接到TableViewController

@IBOutlet weak var mySegmentedControl: UISegmentedControl!
@IBOutlet weak var mySwitch: UISwitch!

但是,当我在ViewController中调用这些UIControls时:

let tableView: TableViewController = TableViewController.init(nibName: nil, bundle: nil)
if tableView.mySwitch.isOn {
//perform actions
}

错误在if-statment上弹出:

致命错误:未包装可选值

时出乎意料地发现了无效

我以为是因为在调用UIControls时尚未加载TableViewController,因此我尝试首先调用TableView的viewDidLoad(),但仍然存在错误。

我该怎么办?感谢任何建议。

您不直接调用viewDidLoad,这是在加载视图后由Uikit完成的。并且需要显示视图时加载视图。

如果您之前需要访问插座,则可以通过

强制加载
tableView.loadViewIfNeeded()

但请记住:

  • 也许最好在涉及控制器的 viewDidLoad内部做插座,而不是从外部进行。
  • 您不应命名控制器变量tableView。该名称建议是 view ,而不是控制器。最好命名它tableViewCtrl左右。

相关内容

  • 没有找到相关文章

最新更新