大佬教程收集整理的这篇文章主要介绍了ios – 如何获取UIMoreListController(私有框架类)的子视图控制器?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
换句话说,如果我有一个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
一种方法是从UITabBarController的viewControllers属性中简单地获取视图控制器,检查是否有超过5个,并且如果超过5,则将所有视图控制器从索引5返回到N-1.(如果小于5,那么没有视图控制器将是UIMoreNavigationController的子节点.)
但是,我想避免硬编码任何关于UITabBarController在列出moreNavigationController中剩余控制器之前将显示的视图控制器数量的假设. Apple可能会在未来改变这个数字.但我无法在UITabBarController或UINavigationController上找到任何API来访问这些子节点,而UIMoreNavigationController不是公共类,因此我不能依赖于该类上公开的任何方法.
>获取选项卡栏中的项目数.如果有这样的标签栏项,UITabBarController.tabBar.items将包含moreNavigationController的标签栏项.
>计算UITabBarController中的视图控制器数量.如果UITabBarController中的视图控制器多于标签栏项,则最后一个标签栏项表示moreNavigationController.
>因此,将标签栏项目数量减少一个(以考虑moreNavigationController),这是UITabBarController.viewControllers中moreNavigationController的第一个子项的索引.
或者,在代码中:
NSUInteger tabCount = [tabBarController.tabBar.items count]; NSUInteger vcCount = [tabBarController.viewControllers count]; NSUInteger idx = (vcCount > tabCount) ? tabCount - 1 : 0; NSIndexSet *is = [NSIndexSet indexSetWithRange:NsmakeRange(idx,vcCount - idX)]; NSArray *moreControllers = [tabBarController.viewControllers objectsATindexes:is];
以上是大佬教程为你收集整理的ios – 如何获取UIMoreListController(私有框架类)的子视图控制器?全部内容,希望文章能够帮你解决ios – 如何获取UIMoreListController(私有框架类)的子视图控制器?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。