У меня есть приложение, которое содержит контроллер центрального представления с 3 дочерними контроллерами представления в прокрутке, которые представляют разделы приложения. Общий поток моего приложения выглядит следующим образомВыйти делегат не работает
LoginVC -> AppVC [Settings, Inbox, Email]
я в настоящее время у меня есть кнопка выхода из системы в моих настройках просмотра контроллера, однако фактическая функция выхода из системы должна быть в AppVC. Я попытался реализации делегата, но, похоже, не может получить его правильно работать
class Settings: UIViewController {
var delegate: LogoutDelegate?
@IBAction func logout(_ sender: Any) {
delegate?.logoutOfApp()
}
}
protocol LogoutDelegate: class {
func logoutOfApp()
}
----------------------------------
class AppVC: UIViewController, LogoutDelegate {
func logoutOfApp() {
print("This should be called")
//Execute logout code
}
}
Может кто-нибудь помочь мне понять, почему мой делегат функции разве вызывается в моей AppVC?
Update
Это, как я настраивал свои контроллеры Подходит для детей в Scrollview
func setupViews() {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let settingsVC = storyboard.instantiateViewController(withIdentifier: "SettingsVC")
let inboxVC = storyboard.instantiateViewController(withIdentifier: "InboxVC")
let emailVC = storyboard.instantiateViewController(withIdentifier: "EmailVC")
let viewControllers = [settingsVC, inboxVC, emailVC]
let width = scrollView.bounds.width
let height = scrollView.bounds.height
scrollView.contentSize = CGSize(width: width * 3, height: height)
var idx = 0
for vc in viewControllers {
addChildViewController(vc)
let originX = CGFloat(idx) * width
vc.view.frame = CGRect(x: originX, y: 0, width: width, height: height)
scrollView.addSubview(vc.view)
vc.didMove(toParentViewController: self)
idx += 1
}
scrollView.setContentOffset(CGPoint(x: width, y: 0), animated: false)
}
Я не уверен, где установить свой делегат. Я попытался установить его в моей цикл self.delegate = vc
но всегда получаю ту же ошибку, не будучи в состоянии установить делегат
Где вы установили делегировать? –