Swift: UIControl в TableViewController обнаружил ноль при вызове ViewController - PullRequest
0 голосов
/ 22 марта 2019

У меня есть два 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-statment:

фатальная ошибка: неожиданно обнаружен ноль при развертывании необязательного значения

Я думал, что это потому, что TableViewController не былозагружается при вызове UIControls, поэтому я попытался сначала вызвать viewDidLoad() tableView, но ошибка все еще остается.

Что мне делать?Ценю любые предложения.

1 Ответ

1 голос
/ 22 марта 2019

Вы не вызываете напрямую viewDidLoad, это делается UIKit после загрузки представления.И представление загружается, когда необходимо отобразить представление.

Если вам необходим доступ к розеткам раньше, вы можете принудительно загрузить загрузку с помощью

tableView.loadViewIfNeeded()

Но помните:

  • Может быть, лучше сделать розетку внутри viewDidLoad задействованного контроллера, а не снаружи.
  • Не следует называть переменную контроллера tableView.Это имя предлагает быть view , а не контроллером.Лучше назовите это tableViewCtrl или около того.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...