【问题标题】:uitabbar and uitabbaritemuitabbar 和 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];

谢谢

【问题讨论】:

    标签: iphone uitabbar uitabbaritem


    【解决方案1】:

    如果您查看 items,它需要一个 UITabBarItems 数组,而不是您似乎正在传递的 UIViewController 子类。

    您必须跟踪其他地方的视图控制器并传递UITabBarItems 数组并在UITabBar 的委托中处理视图控制器。

    或者更好,使用UITabBarController

    【讨论】:

    • 我想要做的是我有一个标签栏,并希望为每个项目添加不同的视图,就像我们在标签栏控制器中所拥有的一样。我不知道如何为 tabbarItem 分配视图控制器
    【解决方案2】:

    我相信您误解了 UITabBarController 的工作原理 (documentation link)。您必须使用viewControllers 属性将UIViewControllers 添加到UITabBarController

    您应该阅读的最后一行:

    [tabBarController setViewControllers:VCArray];

    UITabBarControllertabBar 属性是只读的。你不能这样设置。

    如果你有一个UITabBar (documentation link) 而没有一个UITabBarViewController,那么你将需要使用这个方法:

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

    但是,这些项目不是UIViewControllers!它们是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??
      猜你喜欢
      • 2019-11-22
      • 2017-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-24
      • 2012-07-05
      • 1970-01-01
      相关资源
      最近更新 更多