2011-11-22 70 views
0

我试图让一个应用程序有两种不同的标签栏控制器,一个在状态的预登录,以及一个用于后登录状态。我目前的策略是创建所有的视图,将它们添加到两个数组(每个tabBarController一个),然后用一些逻辑切换作为子视图分配的tabBarController。单一视图添加到两个独立的tabBarController

我目前具有带是两个tabBarControllers之间的共同看法的问题。如果我只从一个数组中创建一个tabBarController,那么一切都很好。但是当我尝试在第一个数组中创建第二个具有相同视图的数组时,所有常见视图都不再出现在具有原始数组视图的tabBarController中。

首先我不知道这是否是连正确对待我的问题。其次,我不确定为什么一个数组中的指针在添加指向另一个数组的指针时似乎失去了引用。

这里是我的代码:

NSArray *loggedViewControllers = [NSArray arrayWithObjects:squareView, circleView,  starView, diamondView, nil]; 
loggedTabBarController.viewControllers = loggedViewControllers; 

NSArray *notLoggedViewControllers = [NSArray arrayWithObjects:squareView, circleView, diamondView, nil]; 
notLoggedTabBarController.viewControllers = notLoggedViewControllers; 

[release squareView]; 
[release circleView]; 
[release diamondView]; 
[release starView]; 

[self.window addSubview:[loggedTabBarController view]]; 
[self.window makeKeyAndVisible]; 

从我办这个代码,我会用空白,升景,空白空白标签栏。

如果我运行以下命令:

[self.window addSubview:[notLoggedTabBarController view]]; 

一切都显示正常。

感谢您的帮助。

回答

1

我不这样做是行得通的。

当添加视图作为一个子视图到另一个视图,它首先将删除上海华目前它是在(如果它是在一个)图。

由于TabBarController管理的TabView是UIView的子类,因此它的行为方式会相同 - 所以当您将视图添加到TabBarControllers视图列表中时,它随后将该视图添加为其TabBarView的子视图,也将从其他TabBarControllers TabView中删除该视图。

你会更好看TabViewController的委托方法我认为,只是在一个TabViewController管理一个单独的列表。

1

我要回答的方法是保持一个单一的标签栏,但改变我以前的项目。我发现改变tabbarItem更容易,然后改变整个标签栏,特别是因为一些项目不会改变。

相关问题