无法加载标识符为“(null)”的包中的nib引用的图像

时间:2011-12-27 12:39:01

标签: iphone ios ios4 localization ios5

我有一个应用程序,允许该用户在运行时从应用程序切换语言,每件事情都可以,但是当切换到另一种语言时加载本地语言的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)" 

我非常乐意帮助我解决这个问题需要花费很多时间。

1 个答案:

答案 0 :(得分:2)

你加载你的笔尖的方式是错误的,它会迫使你将图像“sahdow.png”本地化。事实上,如果你对图像进行本地化,你会看到错误消失 - 但我仍然会避开这条道路。

iOS会自动处理其设置中的语言更改,并加载相应的本地化xib(如果有)。 我建议你不要在代码中明确加载本地化的xib,而是通过以下列方式实例化你的视图控制器而将其留给iOS:

HomeViewController *homeVC = [[HomeViewController alloc] initWithNibName:@"HomeViewController" bundle:nil];

注意:对于我的回答,我假设你的nib文件中有意引用了“sahdow.png”。如果不是这种情况,请在您的nib文件中查找此图像的引用并将其删除。

PS:我刚刚找到了another post,其中提到了用于加载本地化笔尖的解决方案,以及它所带来的副作用 - 例如要求所有相关的图像也要本地化。