Проблемаразматывает обычая SEGUE не запускается
Моя проблема заключается в том, что процесс размотки не срабатывает, даже если кнопка нажата назад.
Мой код
У меня есть класс 1stViewController, который использует пользовательский SEGUE для 2ndViewController. Обычай переход заключается в следующем:
override func perform() {
let sourceVC = self.source as! 1stViewController
let destinationVC = self.destination as! 2ndViewController
sourceVC.addChildViewController(destinationVC)
sourceVC.view.addSubview(destinationVC.view)
}
В моей 2ndViewController я добавил кнопку, которая запускает раскручивание SEGUE обратно 1stViewController. Разрывный сегмент подключается через идентификатор выключения режима размотки segue в контроллере 2ndViewController. Таким образом, я создал IBAction, что размотки выход Segue соединено с:
@IBAction func unwindToFeed(segue: UIStoryboardSegue) {}
Я установил идентификатор размотки Segue, равную той, которая используется в функции действия кнопки
func handleActionBackButton(){
print("here")
self.performSegue(withIdentifier: "unwindId", sender: self)
}
«Здесь» печатается при нажатии кнопки, но, похоже, функция performSegue отсутствует.
Я догадывался, что мне нужен собственный unwindSegue класс, так что я создал unwindSegueEventToFeed:
class unwindSegueEventToFeed: UIStoryboardSegue {
override func perform() {
let sourceVC = self.source as! 2ndViewController
let destinationVC = self.destination as! 1stViewController
let sourceView = sourceVC.view as UIView!
let destView = destinationVC.view as UIView!
let window = UIApplication.shared.keyWindow
window?.insertSubview(destView!, aboveSubview: sourceView!)
sourceVC.dismiss(animated: false, completion: nil)
}
} ... который называется в 2ndViewController:
override func segueForUnwinding(to toViewController: UIViewController, from fromViewController: UIViewController, identifier: String?) -> UIStoryboardSegue? {
return unwindSegueEventToFeed(identifier: identifier, source: fromViewController, destination: toViewController)
}
Любые подсказки на что я должен делать иначе, чтобы вызвать процесс размотки?
Просто чтобы подтвердить, что 'unwindToFeed' находится в 1Пинике контроля? – Paulw11
The unwindToFeed находится в 2ViewController –
Это не то место.Метод разматывания идет в диспетчере просмотра, который вы разматываете * до * – Paulw11