Domanda

Ho un problema con le immagini degli elementi Tabbar. Ho impostato un'immagine su ogni elemento Tabbar ma quando eseguo l'app, l'unica immagine che appare è quella del primo elemento Tabbar. Le immagini di altri elementi Tabbar non vengono visualizzate fino a quando non seleziono una di queste schede. Il codice che utilizzo per impostare un'immagine su un elemento Tabbar è il seguente:

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

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

Qualcuno può aiutarmi?

È stato utile?

Soluzione

Puoi provare questo:

[[[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"]];

Altri suggerimenti

[[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"]];

Usa questo codice:-

- (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];

Crea e restituisce un nuovo elemento con il titolo specificato, l'immagine non selezionata e l'immagine selezionata. Se non viene fornita alcuna immagine selezionata, l'immagine viene utilizzata come immagine non selezionata e selezionata. Per impostazione predefinita, le immagini effettive non selezionate e selezionate vengono create automaticamente dai valori alfa nelle immagini di origine. Per prevenire la colorazione del sistema, fornire immagini con UiimagerEndingModealWaysoriginal. Disponibilità iOS 7 e più tardi.

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];

Preferirei che il ViewController lo faccia. Quindi, a mio avviso, la soluzione migliore dovrebbe essere il metodo INIT di sovrascrivere e impostare il tabbaritem qui.

Probabilmente lo stai facendo in ViewDidload e quindi viene visualizzato solo il primo elemento.

Ci scusiamo per gli errori di ortografia.

Swift 5.4

  tabBarController?.viewControllers?[index].tabBarItem.image = UIImage(named: "imageName")
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top