Контроллер представления запускается модально из родительского контроллера представления, а затем раскручивается к его родительскому элементу, если нажата одна из трех кнопок:
@IBAction func parentSelected(_ sender: UIButton) {
switch sender.tag {
case 1:
parentType = ParentStoryboardId.meetings
case 2:
parentType = ParentStoryboardId.accounts
case 3:
parentType = ParentStoryboardId.contacts
default:
parentType = ParentStoryboardId.accounts
}
self.performSegue(withIdentifier: "unwindToNotes", sender: self)
}
Затем обработчик перехода раскрутки в родительском VC запускает другой VC из таблицы.со списком записей:
@IBAction func unwindToNotes(sender: UIStoryboardSegue) {
if let sourceViewController = sender.source as? SelectParentVC {
DispatchQueue.main.async {
guard let parentType = sourceViewController.parentType
else {
return
}
self.parentSelected = parentType
self.displayParents(parentType)
self.selectParentView.isHidden = true
}
}
}
Первоначально я не указывал основную очередь при выполнении всех операций пользовательского интерфейса, вызываемых обработчиком sewwind в родительском VC.И представление списка, которое я пытался вызвать, не отображалось, хотя отладка подтвердила, что VC списка выполнялся частично.
Кажется, что некоторые операции пользовательского интерфейса, вызванные из обработчика sewind unwind, были перенесены в фоновый поток.Я пытаюсь выяснить, как это произошло, поскольку ни одна из операций, ведущих к операциям «размотки», явно не выполнялась в фоновом потоке.Любые идеи или ссылки будут высоко оценены!