У меня есть контроллер панели вкладок. Когда пользователь нажимает одну из кнопок панели вкладок, мне нужно обновить значение в UIPageViewController, которое находится в целевом контроллере представления.
Я пытаюсь использовать делегата, чтобы сообщить UIPageViewController, какая кнопка панели вкладок был нажат:
protocol PlanTypeDelegate {
func setIntro(thisFlow planType: UITabBarItem)
}
class NewTabBarController: UITabBarController {
var planTypeDelegate : PlanTypeDelegate?
override func viewDidLoad() {
super.viewDidLoad()
// create and handle tab bar button actions
}
override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {
planTypeDelegate?.setIntro(thisFlow: item)
}
В моем UIPageController у меня есть следующее:
class IntroPageController: UIPageViewController {
override func viewDidLoad() {
super.viewDidLoad()
guard let tabbar = self.parent as? NewTabBarController() else { return }
tabbar.delegate = self
}
}
extension IntroPageController : PlanTypeDelegate {
func setIntro(thisFlow planType: UITabBarItem) {
print("this item:\(planType)")
}
}
Вместо этого я получаю это сообщение об ошибке:
Я новичок в передаче данных между VC, поэтому я не знаю, как go обрабатывать этот сценарий.
EDIT Та же ошибка после обновления