iOS以编程方式动态更改选项卡栏项目图像不工作

iOS以编程方式动态更改选项卡栏项目图像不工作,ios,tabbar,Ios,Tabbar,尝试以编程方式在选项卡栏上设置图像时出现问题 我想有一个黑色背景和白色图标与白色文本的所有标签。当你浏览它们时,选中的标签会改变,使它有一个带有白色图标和标题的红色背景。现在,出于测试目的,我在所有选项卡上都有相同的图像。但它们都是不同的图像 现在我的问题是,这段代码似乎被忽略了,出现了“原始”(带有故事板中的设置)。除了在情节提要中更改值外,没有任何更改 我尝试在DidFinishLaunching中使用AppDelegate文件中的选项设置它们,如下所示: - (BOOL)applicati

尝试以编程方式在选项卡栏上设置图像时出现问题

我想有一个黑色背景和白色图标与白色文本的所有标签。当你浏览它们时,选中的标签会改变,使它有一个带有白色图标和标题的红色背景。现在,出于测试目的,我在所有选项卡上都有相同的图像。但它们都是不同的图像

现在我的问题是,这段代码似乎被忽略了,出现了“原始”(带有故事板中的设置)。除了在情节提要中更改值外,没有任何更改

我尝试在DidFinishLaunching中使用AppDelegate文件中的选项设置它们,如下所示:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UITabBarController *tc = [mainStoryboard instantiateViewControllerWithIdentifier:@"tabbar"];

UITabBar *tabBar = tc.tabBar;
UITabBarItem *tabBarItem1 = [tabBar.items objectAtIndex:0];
UITabBarItem *tabBarItem2 = [tabBar.items objectAtIndex:1];
UITabBarItem *tabBarItem3 = [tabBar.items objectAtIndex:2];
UITabBarItem *tabBarItem4 = [tabBar.items objectAtIndex:3];
UITabBarItem *tabBarItem5 = [tabBar.items objectAtIndex:4];

tabBarItem1.selectedImage = [[UIImage imageNamed:@"ikon_clubkort"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal ];
tabBarItem1.image = [[UIImage imageNamed:@"ikon_clubkort"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal ];
tabBarItem1.title = @"xxxx";

tabBarItem2.selectedImage = [[UIImage imageNamed:@"ikon_clubkort"]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal ];
tabBarItem2.image = [[UIImage imageNamed:@"ikon_clubkort"]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal ];
tabBarItem2.title = @"xxxx";

tabBarItem3.selectedImage = [[UIImage imageNamed:@"ikon_clubkort"]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal ];
tabBarItem3.image = [[UIImage imageNamed:@"ikon_clubkort"]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal ];
tabBarItem3.title = @"xxxx";

tabBarItem4.selectedImage = [[UIImage imageNamed:@"ikon_clubkort"]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal ];
tabBarItem4.image = [[UIImage imageNamed:@"ikon_clubkort"]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal ];
tabBarItem4.title = @"xxxx";

tabBarItem5.selectedImage = [[UIImage imageNamed:@"ikon_clubkort"]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal ];
tabBarItem5.image = [[UIImage imageNamed:@"ikon_clubkort"]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal ];
tabBarItem5.title = @"xxxx";

return YES; 
}

你知道我做错了什么吗?

从我读到的内容来看,基本上你是通过编程创建了一个选项卡栏控制器,但没有显示它

你可以做两件事:

  • 将创建的选项卡栏控制器设置为代理的根视图控制器,方法是将其置于
    应用程序:didFinishLaunchingWithOptions
    的末尾:

    self.window.rootViewController=tc

  • 创建
    UITabBarController
    的子类,将您拥有的选项卡栏项目设置代码放在新类“
    viewDidLoad
    方法上,并将该类分配给情节提要中的视图控制器


  • 如果我设置self.window.rootViewController=tc,我的单例将被重置。有什么解决办法吗?对不起,哪一个单身汉?在任何情况下,我都建议使用第二个选项而不是第一个选项。我有一个保存用户数据的singleton对象,但从未设置singleton,因为如果我设置self.window.rootViewController=tc,我的登录类将被跳过。它直接跳入第一个选项卡窗口。如果我没有设置SELF.WOWDO.ROOTVIEW控制器= TC,应用程序会在登录页面上启动,在这种情况下,你应该真正考虑制作一个UITabBar控制器子类,并从登录页面到StyBooad中的那个类制作一个SeGeU。