Segue и Unwind Segue без элемента пользовательского интерфейса - PullRequest
0 голосов
/ 15 сентября 2018

Я искал ответ для этого на SO, но безуспешно.

У меня есть UIViewController A и B. Они НЕ связаны в раскадровке, и я хочу выполнить Segue от A до B, и после нажатия кнопки в B, чтобы активировать unwindSegue для A.

Пока у меня есть:

1) @IBAction в A, чтобы вернуться назад к 2) Функция для подготовки Segue от A до B (В A) 3) Кнопка для вызова unwindSegue от B до A

Мне не хватает логики функции в 2.

Подробнее о B:

Заголовок: FilterView Класс: FilterViewController Идентификатор раскадровки: FilterView

Я попытался создать переход:

let segueToFilter = UIStoryboardSegue(identifier: "SegueToFilterView", source: self, destination: FilterViewController)

Думая, что это может просто дать мне то, что мне нужно.

но я получаю эту ошибку:

Cannot convert value of type 'FilterViewController.Type' to expected argument type UIViewController

Помощь будет оценена по достоинству:)

1 Ответ

0 голосов
/ 15 сентября 2018

Я до сих пор не понимаю, как сегменты вызывают у вас проблемы, но если вы действительно действительно не хотите использовать сегменты, вы можете попробовать представить и отклонить VC программно.

Идея звучит так:

  • Создайте экземпляр вашего VC
  • Передать данные ему, задав некоторые свойства
  • Present!
  • В ВК уволить.

Фактический код будет другим, если вы встроите свои VC в контроллер навигации. Вместо того, чтобы звонить present и dismiss, вы должны вызывать pushVC и popVC на контроллере навигации.

let storyboard = UIStoryboard(name: "Main", bundle: nil)
let vc = storyboard.instantiateViewController(withIdentifier: "FilterView") as FilterViewController
vc.someProperty = someData // this is where you pass data
vc.present(vc, animated: true, completion: nil)

Чтобы передать данные обратно, вы должны использовать шаблон делегата, создав FilterViewDelegate, которому соответствует первый VC. Посмотрите на Google для получения дополнительной информации.

...