我在情节提要中有两个viewControllers
,一个ViewController
(根)和一个TableViewController
,它们通过推式链接相连。
TableViewController
充当应用程序的设置页面,并在其中放置了多个UIControls
,例如UISegmentedControl
和UISwitch
。这些UIControls
通过TableViewController
链接到IBOutlets
。
@IBOutlet weak var mySegmentedControl: UISegmentedControl!
@IBOutlet weak var mySwitch: UISwitch!
但是,当我通过以下方式在UIControls
中称呼这些ViewController
时:
let tableView: TableViewController = TableViewController.init(nibName: nil, bundle: nil)
if tableView.mySwitch.isOn {
//perform actions
}
if语句弹出错误:
致命错误:解开可选值时意外发现nil
我认为这是因为在调用TableViewController
时尚未加载UIControls
,因此我尝试先调用tableView的viewDidLoad()
,但错误仍然存在。
我该怎么办?感谢任何建议。
答案 0 :(得分:1)
您不会直接调用viewDidLoad
,这是在加载视图之后由UIKit完成的。并且在需要显示视图时加载视图。
如果您之前需要进入出口,可以通过以下方式强制加载
tableView.loadViewIfNeeded()
但是请记住:
viewDidLoad
而不是从外部进行。tableView
。该名称建议是视图,而不是控制器。最好命名为tableViewCtrl
左右。