我可以设置一次背景,但之后它再也不会改变了。我已经在stackoverflow上看到了所有的例子。代码示例看起来总是一样的。我已经设置了代表。图像都可以。我将它们一个接一个地设置为默认图像并显示。但在应用程序完成启动后,后台不再发生任何事情。
这是我的代码:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[self customizeInterface];
// Override point for customization after application launch.
self.tabController = (UITabBarController *)self.window.rootViewController;
self.tabController.delegate = self;
...
}
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
int tabitem = self.tabController.selectedIndex;
NSLog(@"tabitem: %i", tabitem);
[self switchTabBarImage:tabitem];
//[[tabController objectAtIndex:tabitem] popToRootViewControllerAnimated:YES];
}
- (void)switchTabBarImage:(int)selectedIndex
{
NSLog(@"selected: %i", selectedIndex);
if (selectedIndex == 0) {
NSLog(@"0");
UIImage *tabBarBackground = [UIImage imageNamed:@"tabbar-1.png"];
[[UITabBar appearance] setBackgroundImage:tabBarBackground];
}
if (selectedIndex == 1) {
NSLog(@"1");
UIImage *tabBarBackground = [UIImage imageNamed:@"tabbar-2.png"];
[[UITabBar appearance] setBackgroundImage:tabBarBackground];
}
if (selectedIndex == 2) {
NSLog(@"2");
UIImage *tabBarBackground = [UIImage imageNamed:@"tabbar-3.png"];
[[UITabBar appearance] setBackgroundImage:tabBarBackground];
}
if (selectedIndex == 3) {
NSLog(@"3");
UIImage *tabBarBackground = [UIImage imageNamed:@"tabbar-4.png"];
[[UITabBar appearance] setBackgroundImage:tabBarBackground];
}
}
- (void)customizeInterface
{
UIImage *tabBarBackground = [UIImage imageNamed:@"tabbar-1.png"];
[[UITabBar appearance] setBackgroundImage:tabBarBackground];
UIImage *selectionIndicator = [UIImage imageNamed:@"tabbar-icon-clean.png"];
[[UITabBar appearance] setSelectionIndicatorImage:selectionIndicator];
}
调试器显示:
2012-11-13 02:42:06.147 soundapp[9060:c07] tabitem: 1
2012-11-13 02:42:06.148 soundapp[9060:c07] selected: 1
2012-11-13 02:42:06.148 soundapp[9060:c07] 1
2012-11-13 02:42:07.739 soundapp[9060:c07] tabitem: 2
2012-11-13 02:42:07.739 soundapp[9060:c07] selected: 2
2012-11-13 02:42:07.740 soundapp[9060:c07] 2
我正在搜索,也没有几个小时,也无法弄清楚为什么它只能工作一次。有人在我的代码中看到错误吗?
答案 0 :(得分:0)
又过了一个小时后,我在网上的其他地方找到了解决方案(http://felipecypriano.com/2012/02/27/how-to-customize-uitabbar-on-ios-5/)
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
int tabitem = self.tabController.selectedIndex;
NSLog(@"tabitem: %i", tabitem);
[self switchTabBarImage:tabitem];
//[[tabController objectAtIndex:tabitem] popToRootViewControllerAnimated:YES];
}
- (void)switchTabBarImage:(int)selectedIndex
{
switch (selectedIndex) {
case 0:
[[[self tabController] tabBar] setBackgroundImage:[UIImage imageNamed:@"tabbar-1.png"]];
break;
case 1:
[[[self tabController] tabBar] setBackgroundImage:[UIImage imageNamed:@"tabbar-2.png"]];
break;
case 2:
[[[self tabController] tabBar] setBackgroundImage:[UIImage imageNamed:@"tabbar-3.png"]];
break;
case 3:
[[[self tabController] tabBar] setBackgroundImage:[UIImage imageNamed:@"tabbar-4.png"]];
break;
}
}
- (void)customizeInterface
{
UIImage *tabBarBackground = [UIImage imageNamed:@"tabbar-1.png"];
[[UITabBar appearance] setBackgroundImage:tabBarBackground];
UIImage *selectionIndicator = [UIImage imageNamed:@"tabbar-icon-clean.png"];
[[UITabBar appearance] setSelectionIndicatorImage:selectionIndicator];
}
我真的不明白为什么有两种不同的方法来改变背景。令人困惑的是,这两个不同的代码行只能在不同的地方工作。我不明白。但现在它有效。