Я заметил то же самое.Я предполагаю, что это ошибка в реализации UITabBarController.Обратите внимание, что использование ключевого пути selectedViewController
вместо selectedIndex
приводит к срабатыванию уведомлений KVO.
Но будьте осторожны.Если ваш UITabBarController имеет UIMoreNavigationController (для вкладки «Дополнительно»), вы получите уведомление KVO, когда пользователь выберет вкладку «Еще», но вы не получите , получая какие-либоуведомления, когда пользователь выбирает дочерний view-контроллер UIMoreNavigationController.Это связано с тем, что UIMoreNavigationController является отдельным контроллером представления, поэтому, когда вы выбираете один из его дочерних контроллеров представления, значение selectedViewController
для UITabBarController не изменяется, а изменяется topViewController
на самом деле UIMoreNavigationController.
Это будетбыло бы замечательно, если бы вы могли наблюдать свойство topViewController
UIMoreNavigationController в дополнение к свойству selectedViewController
UITabBarController, но это свойство также не вызывает срабатывания уведомлений KVO.Однако вы можете установить делегата на UIMoreNavigationController и реализовать метод navigationController:didShowViewController:animated:
.
Сводка: наблюдать за свойством selectedViewController
UITabBarController и, еслиВ вашем приложении есть вкладка «Дополнительно», установите делегата в свойстве moreNavigationController
контроллера панели вкладок.