我在情节提要中有两个viewControllers
,即ViewController
(root)和 TableViewController
,它们由推送SEGUE链接。
TableViewController
充当应用程序的设置页面,将多个UIControls
(例如UISegmentedControl
和UISwitch
)放入其中。这些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
左右。