У меня есть три viewController'а:
UITabBar виден)UITabBar скрыт)UITabBar виденЯ делаю это с помощью следующего кода от FeedController до PostController:
let postVC = PostController()
postVC.hidesBottomBarWhenPushed = true
pushViewController(postVC, animated: true)
postVC.hidesBottomBarWhenPushed = false
Затем из PostVC в UserVC:
let userVC = UserController()
userVC.hidesBottomBarWhenPushed = false
pushViewController(userVC, animated: true)
Это прекрасно работает. Он показывает UITabBar везде, кроме перехода к сообщению. Однако проблема возникает, когда я перехожу к профилю пользователя (UserController) из сообщения. Он показывает UITabBar в профиле, как и предполагалось, но когда я возвращаюсь назад (используя кнопку «Назад» в моем UINavigationController), UITabBar все еще виден. Я хочу, чтобы он снова был скрыт, когда я вернусь из userVC в postVC.
Есть ли способ сделать это?





попробуйте в своем посте viewController:
override func viewWillDisappear(_ animated: Bool) {
postVC.hidesBottomBarWhenPushed = true
}
Это вызовет его, когда вид вот-вот исчезнет, но не тогда, когда он появится, поэтому он должен скрыться, когда вы вернетесь.
@PennyWise Приятно слышать! Я много раз попадал в ситуации, подобные вашей, и ответ всегда приходит, когда я делаю перерыв или занимаюсь чем-то другим! Подумайте, как легко попасться на том, что вы смотрите не туда, когда вы действительно сосредоточены, удачи!
Боюсь, сначала я был слишком взволнован. Когда я реализую это, кажется, что все работает нормально, однако, если я перехожу к другому viewController из userVC, он также скрывает tabBar, хотя тогда он также должен отображаться снова. Поэтому в настоящее время я ищу способ показать это только тогда, когда я уверен, что кнопка «Назад» была нажата, но пока безуспешно.
@PennyWise — это кнопка «Назад», созданная вами, кнопка «Назад» на панели навигации или что-то еще?
@PennyWise первое, что приходит на ум, это если, например, его кнопку, которую вы сделали, вы могли бы создать переменную var backButtonPressed = false и в коде кнопки установить для нее значение true и иметь там функцию отклонения, а в viewWillDissapear вам просто нужно if backButtonPressed == true { затем скрыть tabBar , а если они неправды, то вернитесь, не скрывая этого. Это звучит правильно?
Имеет смысл! В конце концов я исправил это, проверив .isMovibgFromParent, если это правда, то нажата кнопка «Назад» (это navigationBackButton). Так что я могу понять это довольно хорошо прямо сейчас. Имеются некоторые трудности с другими вкладками (я использую navigationController и tabBarController), которые могут напрямую обращаться к сообщениям и пользователям (например, вкладка ленты и вкладка поиска могут как переходить к пользователям, так и к сообщениям). Так что, если я переключаюсь между ними, иногда это не так, как ожидалось, но, думаю, я разберусь с этим позже. На данный момент первая вкладка работает отлично, если проверить isMovingFromParent!
@PennyWise Круто! Лучший совет, который я мог бы дать, — записать или найти способ визуализировать все возможные переходы, навигацию и т. д., и вы можете обнаружить что-то, что может помочь. Удачи!
Это невероятно и делает именно то, что мне нужно. Я играл с viewWillAppear и viewWillDisappear, но я всегда работал с другим viewController (например, меняя postVC с willDisappear пользователя VC). Это здорово, большое спасибо!