var settingsDelegate: SettingsViewController?
... это не ссылка на контроллер вида, который delegate
вы хотите установить. Похоже, это просто nil
.
Также переопределено prepare(for:sender:)
не вызывается, потому что вы не выполняете никаких переходов при переключении между вкладками
Поскольку вы используете контроллер панели вкладок и хотите установить делегаты между его контроллерами встраивания, вы должны установить делегат определенного контроллера представления из массива viewControllers
массива
контроллера панели вкладок.
func setDelegate() {
guard let tabBarController = tabBarController, let thirdVC = tabBarController.viewControllers?[2] as? SettingsViewController else { return }
thirdVC.delegate = self
}
затем вызовите этот метод в MainViewController
переопределенном viewDidLoad