【问题标题】:Tabbar item image doesn't appear标签栏项目图像不出现
【发布时间】:2013-11-20 05:25:12
【问题描述】:

我对标签栏项目的图像有疑问。我在每个标签栏项目上设置了一个图像,但是当我运行应用程序时,唯一出现的图像是第一个标签栏项目的图像。在我选择这些选项卡之一之前,不会出现其他选项卡栏项目的图像。我用来在标签栏项目上设置图像的代码如下:

[self.tabBarItem setImage:[UIImage imageNamed:@"multi30x30.png"]];

[self.tabBarItem setFinishedSelectedImage:[UIImage imageNamed:@"multi30x30.png"]
              withFinishedUnselectedImage:[UIImage imageNamed:@"multi30x30.png"]];

有人可以帮我吗?

【问题讨论】:

  • 您的部署目标是什么? ios7?

标签: ios objective-c uitabbarcontroller uitabbaritem


【解决方案1】:

你可以试试这个:

[[[self.tabBarController.viewControllers objectAtIndex:0] tabBarItem]setFinishedSelectedImage:[UIImage imageNamed:@"LocateIconActive.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"LocateIconInactive.png"]];

[[[self.tabBarController.viewControllers objectAtIndex:1] tabBarItem]setFinishedSelectedImage:[UIImage imageNamed:@"ProductsIconActive.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"ProductsIconInactive.png"]];

[[[self.tabBarController.viewControllers objectAtIndex:2] tabBarItem]setFinishedSelectedImage:[UIImage imageNamed:@"NextDeliveryIconActive.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"NextDeliveryIconInactive.png"]];

【讨论】:

    【解决方案2】:
    [[tabBarController.tabBar.items objectAtIndex:0] setFinishedSelectedImage:[UIImage imageNamed:@"blabla1.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"bleble1.png"]];
    [[tabBarController.tabBar.items objectAtIndex:1] setFinishedSelectedImage:[UIImage imageNamed:@"blabla2.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"bleble2.png"]];
    [[tabBarController.tabBar.items objectAtIndex:2] setFinishedSelectedImage:[UIImage imageNamed:@"blabla3.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"bleble3.png"]];
    

    【讨论】:

    • 感谢 Jignesh 的回复,但由于某种原因,当我添加上述代码时,我有一个线程断点。
    【解决方案3】:

    使用此代码:--

    - (BOOL)application:(UIApplication *)application
     didFinishLaunchingWithOptions:(NSDictionary 
      *)launchOptions
     {
    
    
    UITabBarController *tabBarController 
    = (UITabBarController 
     *)self.window.rootViewController;
    
    UIImage *selectedImage0 = [UIImage
       imageNamed:@"tb_inorganic_selected"];
    UIImage *unselectedImage0 = [UIImage imageNamed:@"tb_inorganic_normal"];
    
    UIImage *selectedImage1 = [UIImage imageNamed:@"tb_organic_selected"];
    UIImage *unselectedImage1 = [UIImage imageNamed:@"tb_organic_normal"];
    
    UIImage *selectedImage2 = [UIImage imageNamed:@"tb_acid_selected"];
    UIImage *unselectedImage2 = [UIImage imageNamed:@"tb_acid_normal"];
    
    
    
    UITabBar *tabBar = tabBarController.tabBar;
    UITabBarItem *item0 = [tabBar.items objectAtIndex:0];
    UITabBarItem *item1 = [tabBar.items objectAtIndex:1];
    UITabBarItem *item2 = [tabBar.items objectAtIndex:2];
    
    [item0 setFinishedSelectedImage:selectedImage0 withFinishedUnselectedImage:unselectedImage0];
    [item1 setFinishedSelectedImage:selectedImage1 withFinishedUnselectedImage:unselectedImage1];
    [item2 setFinishedSelectedImage:selectedImage2 withFinishedUnselectedImage:unselectedImage2];
    

    【讨论】:

      【解决方案4】:

      创建并返回具有指定标题、未选择图像和已选择图像的新项目。 如果未提供 selectedImage,则 image 将用作未选择和已选择的图像。 默认情况下,实际未选择和选择的图像是根据源图像中的 alpha 值自动创建的。为防止系统着色,请使用 UIImageRenderingModeAlwaysOriginal 提供图像。可用性 iOS 7 及更高版本。

      UIImage *aImage = [UIImage imageNamed:@"a"]; 
      aImage = [aImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
      
      UIImage *inaImage = [UIImage imageNamed:@"ina"];
      inaImage = [inaImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
      
      self.aController.tabBarItem = [[UITabBarItem alloc]initWithTitle:@"title" image:inaImage selectedImage:aImage];
      

      【讨论】:

        【解决方案5】:

        我希望 ViewController 这样做。因此,在我看来,最好的解决方案应该是覆盖 init 方法并在此处设置 TabBarItem。

        可能您在 viewDidLoad 中执行此操作,因此只出现第一项。

        抱歉,拼写错误。

        【讨论】:

          【解决方案6】:

          SWIFT 5.4

            tabBarController?.viewControllers?[index].tabBarItem.image = UIImage(named: "imageName")
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2014-10-10
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-02-27
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多