приложение застревает, так как viewDidLoad не вызывается
Приложение не застревает. Работает отлично. viewDidLoad
вызывается, когда контроллер вида создан и загружает его вид. Это случается только один раз в жизни контроллера представления. Когда вы покидаете контроллер представления и возвращаетесь обратно к нему, он все еще там (то есть он не создается с нуля), поэтому, естественно, viewDidLoad
не вызывается.
Если ваш Цель состоит в том, чтобы услышать о том факте, что контроллер панели вкладок переключается на VC1, дать контроллеру панели вкладок делегата и реализовать tabBarController (_: didSelect:) или аналогичный.
Еще лучше , настроить вещи так, чтобы не было необходимости делать это. Если есть общие данные, к которым получают доступ оба контроллера представления, разработайте архитектуру так, чтобы контроллер представления отправлял новые данные вверх в контроллер данных, и контроллер данных транслировал новости об изменении вниз для всех контроллеров представления, которые должны знать это.