uitabbar 和 uitabbaritem
Posted
技术标签:
【中文标题】uitabbar 和 uitabbaritem【英文标题】:uitabbar and uitabbaritem 【发布时间】:2011-06-30 15:28:58 【问题描述】:我正在尝试将 UITabBarItems
添加到 UITabBar
而不是标签栏控制器。这是我试图做的。当我调用 setItems 时它总是崩溃。哪位大神能指点一下。
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];
谢谢
【问题讨论】:
【参考方案1】:如果您查看 items
,它需要一个 UITabBarItem
s 数组,而不是您似乎正在传递的 UIViewController
子类。
您必须跟踪其他地方的视图控制器并传递UITabBarItem
s 数组并在UITabBar
的委托中处理视图控制器。
或者更好,使用UITabBarController
。
【讨论】:
我想要做的是我有一个标签栏,并希望为每个项目添加不同的视图,就像我们在标签栏控制器中所拥有的一样。我不知道如何为 tabbarItem 分配视图控制器【参考方案2】:我相信您误解了 UITabBarController
的工作原理 (documentation link)。您必须使用viewControllers
属性将UIViewController
s 添加到UITabBarController
。
您应该阅读的最后一行:
[tabBarController setViewControllers:VCArray];
UITabBarController
的 tabBar
属性是只读的。你不能这样设置。
如果你有一个UITabBar
(documentation link) 而没有一个UITabBarViewController
,那么你将需要使用这个方法:
- (void)setItems:(NSArray *)items animated:(BOOL)animated
但是,这些项目不是UIViewController
s!它们是UITabBarItem
(documentation link) 的实例。您可以通过将它们放入一个数组来一次设置它们,或者您可以为每个视图控制器设置它们。您可以使用多个系统项目(更多、收藏夹等),也可以使用– initWithTitle:image:tag:
创建自定义项目。
【讨论】:
【参考方案3】:代码似乎错误。我猜
[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。希望对您有所帮助。
【讨论】:
如何将视图分配给特定的 tabbaritem??以上是关于uitabbar 和 uitabbaritem的主要内容,如果未能解决你的问题,请参考以下文章