我有一个应用程序,允许该用户在运行时从应用程序切换语言,每件事情都可以,但是当切换到另一种语言时加载本地语言的XIB,但在此Xib.below中没有任何图像我的代码用于切换到其他语言。
NSString* str = [[[NSUserDefaults standardUserDefaults]valueForKey:@"AppleLanguages"] objectAtIndex:0];
NSBundle* bnd = [NSBundle bundleWithPath:[[NSBundle mainBundle]pathForResource:str ofType:@"lproj" ]];
HomeViewController *homeVC = [[HomeViewController alloc] initWithNibName:@"HomeViewController" bundle:bnd];
UINavigationController *localNavigationController = [[UINavigationController alloc] initWithRootViewController:homeVC];
localNavigationController.viewControllers = [NSMutableArray arrayWithObject:homeVC];
localNavigationController.navigationBarHidden = YES;
NSMutableArray *navs = [NSMutableArray arrayWithObject: localNavigationController];
tabBarController.viewControllers = navs;
self.window.rootViewController = tabBarController;
这是Xcode调试中发生的错误
Could not load the "sahdow.png" image referenced from a nib in the bundle with identifier "(null)"
我非常乐意帮助我解决这个问题需要花费很多时间。
答案 0 :(得分:2)
你加载你的笔尖的方式是错误的,它会迫使你将图像“sahdow.png”本地化。事实上,如果你对图像进行本地化,你会看到错误消失 - 但我仍然会避开这条道路。
iOS会自动处理其设置中的语言更改,并加载相应的本地化xib(如果有)。 我建议你不要在代码中明确加载本地化的xib,而是通过以下列方式实例化你的视图控制器而将其留给iOS:
HomeViewController *homeVC = [[HomeViewController alloc] initWithNibName:@"HomeViewController" bundle:nil];
注意:对于我的回答,我假设你的nib文件中有意引用了“sahdow.png”。如果不是这种情况,请在您的nib文件中查找此图像的引用并将其删除。
PS:我刚刚找到了another post,其中提到了用于加载本地化笔尖的解决方案,以及它所带来的副作用 - 例如要求所有相关的图像也要本地化。