Получите представление viewController для viewController.view в swift - PullRequest
0 голосов
/ 24 марта 2020

Я пытаюсь получить представление viewController представления viewController Идея такова: у меня есть

viewController = CategoriesViewController

, и я представляю его вид внутри пыльника

viewController = HomeViewController

с помощью

CategoriesViewController.view, поэтому, когда я хочу достичь

HomeViewController с CategoriesViewController

i сделайте это

let vc = self.presentingViewController as? HomeViewController

, но это говорит мне, что это ноль, я попробовал

.parentViewController

и он возвращается

CategoriesViewController

Ответы [ 2 ]

0 голосов
/ 24 марта 2020

Если вы хотите изменить переменную в HomeVieController с помощью CategoriesViewController, вы можете создать свой собственный протокол . Вы можете использовать протоколы для связи между различными контроллерами.

    protocol ChangeVariableProtocol {
            func changeVar(variable: Int)
        }

В самом протоколе вы только объявляете методы. В вашем CategoriesViewController вы бы создали делегат Varibale, подобный этому

var changeVarDelegate: ChangeVariableProtocl?

Всякий раз, когда вы хотите изменить переменную в CategoriesViewController, вы вызываете метод протокола.

changeVarDelegate?.changeVar(10)

В HomeViewController вам необходимо реализовать этот протокол и инициализировать переменную changeVarDelegate.

    extension HomeViewController: ChangeVarProtocol {
        func changeVar(var: variable) {
           // Implement your own logic here
         self.valueToChange = variable
        }

И убедиться, что вы инициализируете changeVarDelegate при создании экземпляра CategoriesViewController .

Надеюсь, это поможет!

0 голосов
/ 24 марта 2020
  • Создайте свойство замыкания обратного вызова как в CategoriesViewController, так и в его представлении.
  • Прямо перед представлением контроллера назначьте замыкание на , измените значение свойства на свойство обратного вызова в контроллере.
  • В viewDidLoad передать закрытие представлению.
  • Вызвать закрытие в представлении, которое должно быть выполнено в представляющем контроллере.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...