Как получить дочерние контроллеры представления UIMoreListController (частный каркасный класс)?
Мне любопытно, есть ли законный 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
Один из способов сделать это - просто получить контроллеры представления из UITabBarControllerviewControllers
свойство, проверьте, если их больше 5, и верните все контроллеры представления из индекса 5 вN - 1
если их больше 5. (Если их меньше 5, то никакие контроллеры представления не будут дочерними для UIMoreNavigationController.)
Тем не менее, я бы хотел избежать жесткого предположения о каких-либо предположениях о количестве контроллеров представления, которые UITabBarController отобразит перед перечислением оставшихся контроллеров вmoreNavigationController
, Apple может изменить это число в будущем. Но я не могу найти ни API ни в UITabBarController, ни в UINavigationController, с помощью которого можно получить доступ к этим дочерним элементам, а UIMoreNavigationController не является общедоступным классом, поэтому я не могу полагаться на любые методы, представленные в этом классе.