Как получить родителя дочернего контроллера вида?
У меня есть контроллер представления A с сегментированным управлением, и я добавил два представления контроллера представления (B & C) в controllerA для выбора другого сегмента. У меня по одной кнопке на controllerB и controllerC. При нажатии кнопки каждого контроллера B & controllerC я собирается в контроллер D.
Как мне узнать, с какого контроллера я иду?
Я попробовал код ниже, но я думаю, что из-за представлений контроллера (B & C), добавленных к controllerA, он дает мне ноль.
guard let parent = self.parent else {return}
Как стать родителем в этом сценарии?
1 ответ
Немного другое решение, которое я использовал однажды:
Объявите перечисление с отправителем A, B, C и т. Д.
enum Sender { case A case B case C }
Поместите переменную в D с именем sender.
var sender : Sender!
При инициализации VC установите его соответствующего отправителя. Если вы используете segue, используйте для подготовки к segue, чтобы установить значение.
override func prepare(for segue: UIStoryboardSegue, sender: Any?) { if segue.identifier == "D" { let vc = segue.destination as! D vc.sender = B or C //As required } }
Затем вы можете использовать значение отправителя, чтобы сделать то, что вы хотите, на основе отправителя. Хорошо, что если вы продолжите навигацию, вы всегда можете передать значение отправителя следующим ViewControllers.