Мне любопытно, существует ли законный API, с помощью которого можно получить контроллеры представления, являющиеся потомками UIMoreListController
?(UIMoreListController является дочерним элементом в верхней части стека представлений UIMoreNavigationController. UIMoreNavigationController - это объект, на который указывает свойство moreNavigationController
UITabBarController
.)
Другими словами, если у меня есть UITabBarControllerи я установил массив из шести контроллеров представлений, иерархия представлений будет выглядеть примерно так (на самом деле это иерархия представлений, а не контроллеров представлений, но использование этих идентификаторов более целесообразно):
+ UITabBarController <-- has five tabs
|--- view controller <-- these are my own view controllers
|--- view controller
|--- view controller
|--- view controller
|--+ UIMoreNavigationController <-- root view controller of fifth tab
|--+ UIMoreListController <-- table-based view shown on fifth tab
|--- view controller <-- these are my own view controllers
|--- view controller
Один из способов сделать это - просто получить контроллеры представлений из свойства viewControllers
UITabBarController, проверить, не превышает ли их 5, и вернуть все контроллеры представлений из индекса 5 в N - 1
, если их больше 5.(Если их меньше 5, то никакие контроллеры представлений не будут дочерними для UIMoreNavigationController.)
Однако я хотел бы избежать жесткого кодирования любых предположений о количестве контроллеров представлений, которые UITabBarController будет отображать перед перечислениемостальные контроллеры в moreNavigationController
.Apple может изменить это число в будущем.Но я не могу найти ни API ни в UITabBarController, ни в UINavigationController, с помощью которого можно получить доступ к этим дочерним элементам, а UIMoreNavigationController не является публичным классом, поэтому я не могу полагаться на любые методы, представленные в этом классе.