我有一个视图控制器LoginViewController
,其中包含一个xib文件LoginViewController.xib
。我在代码中记录控制器的nibName。当我在iPhone模拟器上运行项目时,nibName不是nil,它是正确的nib名称,一切正常。但是当我在iPad上运行项目时,nibName是零。
init LoginViewController的代码是。控制器和nib文件位于框架中。
NSBundle *bundle = [NSBundle bundleWithURL:[[NSBundle mainBundle] URLForResource:@"FavorLibraryResources" withExtension:@"bundle"]];
LoginViewController *controller = [[LoginViewController alloc] initWithNibName:NSStringFromClass([LoginViewController class]) bundle:bundle];
我发现了问题,我打开了FavorLibraryResources.bundle
,其中有一个LoginViewController~iphone.xib
文件。但是xib名称是LoginViewController.xib
。似乎xcode会自动将~iphone
添加到文件名中。但它不会生成~ipad
版本的xib。所以这个xib没有在iPad上加载。
答案 0 :(得分:0)
请尝试以下代码,并验证笔尖名称:
NSString * nibName = @"LoginViewController";
if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad )
nibName = @"LoginViewController_iPad";
NSBundle *bundle = [NSBundle bundleWithURL:[[NSBundle mainBundle] URLForResource:@"FavorLibraryResources" withExtension:@"bundle"]];
LoginViewController *controller = [[LoginViewController alloc] initWithNibName:nibName bundle:bundle];