Frage

Ich habe ein Problem mit den Bildern von Tabbar -Elementen. Ich habe ein Bild auf jedem TabBar -Element festgelegt, aber wenn ich die App ausführe, ist das einzige Bild, das angezeigt wird, das des ersten Tabbar -Elements. Bilder anderer Tabbar -Elemente werden erst angezeigt, wenn ich eines dieser Registerkarten auswähle. Der Code, mit dem ich ein Bild auf einem Tabal -Element festlegt, ist Folgendes:

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

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

Kann mir jemand helfen?

War es hilfreich?

Lösung

Sie können dies versuchen:

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

Andere Tipps

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

Verwenden Sie diesen Code:-

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

Erstellt und gibt ein neues Element mit dem angegebenen Titel, dem nicht ausgewählten Bild und dem ausgewählten Bild zurück. Wenn keine ausgewählte Ausführung bereitgestellt wird, wird das Bild sowohl als nicht ausgewähltes als auch als ausgewähltes Bild verwendet. Standardmäßig werden die tatsächlichen nicht ausgewählten und ausgewählten Bilder automatisch aus den Alpha -Werten in den Quellbildern erstellt. Um das Färben von Systemen zu verhindern, stellen Sie Bilder mit UIimagerenderingModeAlwaysoriginal bereit. Verfügbarkeit iOS 7 und später.

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

Ich würde es vorziehen, dass der ViewController dies tut. Meiner Meinung nach sollte die beste Lösung die Init -Methode überschreiben und das Tabartem hier festlegen.

Wahrscheinlich machen Sie es in ViewDIDLoad und so werden nur das erste Element angezeigt.

Entschuldigung für die Rechtschreibfehler.

Swift 5.4

  tabBarController?.viewControllers?[index].tabBarItem.image = UIImage(named: "imageName")
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top