从标签栏控制器中完全删除所有视图控制器

从标签栏控制器中完全删除所有视图控制器

问题描述:

我想从tabbar控制器完全删除所有视图控制器,无论它是否包含,以及在运行时将新视图控制器 添加到tababr控制器中是否可以这样做?做了如下的事情,它没有给出输出?从标签栏控制器中完全删除所有视图控制器

UIViewController *thisIsTheViewControllerIWantToSetNow; 
int indexForViewControllerYouWantToReplace; 
NSMutableArray *tabbarViewControllers = [self. tabController.viewControllers mutableCopy]; 
    [tabbarViewControllers removeAllObjects]; 



self.tabController.viewControllers = [NSArray arrayWithObjects:self.moreNavController, self.logInNavController, nil];; 
+0

什么是'self'在这个例子中,哪里是它的'tabbar'属性定义,并执行'tabbar'属性包含什么样的价值时,上面的代码运行吗? – Jonah 2012-02-21 05:49:40

+0

请参阅编辑代码 – nameless 2012-02-21 06:12:14

假设self中给出的例子是UITabBarController实例然后试图直接操纵其tabbar是不合适的。而是设置viewControllers属性。 作为UITabBarController文档状态:

的TabBar与此控制器相关联的选项卡栏视图。 (只读)

@属性(非原子,只读)UITabBar *的TabBar

讨论

你应该 从未尝试操作存储在此 属性UITabBar对象本身。如果您尝试这样做,则标签栏视图会抛出 异常。要为标签栏界面配置项目,您应该将 分配一个或多个自定义视图控制器给 viewControllers属性。标签栏从您指定的视图控制器中收集所需的标签栏 项目。

https://developer.apple.com/library/ios/documentation/uikit/reference/UITabBarController_Class/Reference/Reference.html#//apple_ref/doc/uid/TP40006931-CH3-SW4

+0

我不明白,我在appdelegate.m文件中尝试 @property(nonatomic,只读)UITabBarController * tabController;它不工作...。 – nameless 2012-02-21 06:03:45

+0

什么不起作用?你想达到什么目的?你尝试了什么?你看到了什么意外的结果?不要要求我猜测“不工作”是什么意思。 您将需要对正在显示的标签栏控制器以及您希望显示的视图控制器的引用,而不是其当前内容。你有这两种吗? 您还需要决定哪个对象负责更改标签栏控制器的内容。这是应用程序委托吗? – Jonah 2012-02-21 06:32:00