2011-06-30 44 views
2

我想将UITabBarItems添加到UITabBar而不是tabbar控制器。这是我试图做的。当我调用setItems时,它总是崩溃。任何请指出什么是错的。uitabbar和uitabbaritem

My_Accounts *my_AccountsVC = [[My_Accounts alloc] init]; 
Payments *paymentsVC = [[Payments alloc] init]; 
Transfer *transferVC = [[Transfer alloc] init]; 
NSArray *VCArray = [[NSArray alloc] initWithObjects:my_AccountsVC,paymentsVC,transferVC, nil]; 
[self.tabbar setItems:VCArray]; 

感谢

回答

2

如果你看看items,它需要一个UITabBarItem s的数组,而不是UIViewController你看起来正在传递的子类。

您必须跟踪其他地方的视图控制器并传递一个UITabBarItem s的数组,并处理UITabBar的委托中的视图控制器。

或者更好,请使用UITabBarController

+0

我想要做的是我有一个tabbar,并希望为每个项目添加不同的视图,如我们在tabbar控制器中所拥有的。我没有弄清楚如何为tabbarItem分配一个viewcontrollor – pa12

1

我相信你是误解如何UITabBarController作品(documentation link)。您必须使用viewControllers属性将UIViewController添加到UITabBarController

你有最后一行应改为:

[tabBarController setViewControllers:VCArray];

UITabBarControllertabBar属性为只读。你不能设置。

如果你有一个UITabBardocumentation link)没有UITabBarViewController,那么你将需要使用方法:

- (void)setItems:(NSArray *)items animated:(BOOL)animated 

然而,这些项目都没有UIViewController小号!它们是UITabBarItemdocumentation link)的实例。您可以通过将它们放入数组中来将它们全部设置为一次,也可以将它们设置为每个视图控制器。您可以使用多个系统项目(更多,收藏夹等),或者您可以使用– initWithTitle:image:tag:来创建自定义项目。

1

代码看起来不对。我猜

[self.tabbar setItems:VCArray]; 

上面的行应该有UITabBarItems数组的参数。我想你传递了UIViewController的项目。您应该创建UITabbarItems并将其传递给setItems方法中的数组。

你应该这样做如下:

UITabBarItem *tabOne = [[UITabBarItem alloc] initWithTabBarSystemItem:UITabBarSystemItemBookmarks tag:0]; 
    UITabBarItem *tabTwo = [[UITabBarItem alloc] initWithTabBarSystemItem:UITabBarSystemItemFavorites tag:1]; 

    NSArray *arrTabbarItems = [NSArray arrayWithObjects:tabOne,tabTwo, nil]; 

    [tabbar setItems:arrTabbarItems]; 

我不知道,因为我一直使用的UITabBarController做到。希望这个帮助。

+0

我将如何分配一个视图到那个特定的tabbaritem? – pa12