2011-09-23 46 views
0

我有一个通用的应用程序,我试图共享一个viewController代码。我有这样的:动态加载xib但错误显示

if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) { 
    AboutController *screen = [[AboutController alloc] initWithNibName:@"iPhoneAboutController" bundle:nil]; 
    screen.modalTransitionStyle = UIModalTransitionStyleCrossDissolve; 
    [self presentModalViewController:screen animated:YES];  
} 
else 
{ 
    AboutController *screen = [[AboutController alloc] initWithNibName:nil bundle:nil]; 
    screen.modalTransitionStyle = UIModalTransitionStyleCrossDissolve; 
    [self presentModalViewController:screen animated:YES];  
} 

虽然这是加载,当我通过代码,但它击中了厦门国际银行为iPhone,但它似乎永远是装的iPad版。我知道这是因为在iPhone的xib文件中,我手动添加了不同的背景图像,并且它从不显示。在iPhone模拟器中,它显示了iPad屏幕外的版本。另外,如果我单步执行控制器中的代码,它确实表明加载是iPhone,但显示器是所有iPad对象。在iPhone xib中,我将文件所有者设置为AboutController。

这是我第一次尝试“共享代码”。我知道我可以用相同的代码创建单独的类文件,但这似乎毫无意义。任何帮助是极大的赞赏。

地理...

+0

我们可以看到AboutController的initWithNibName方法吗?这可能是问题的出处。另外,这可能是放置这种逻辑的更好的地方。只是一个想法。 – picciano

+0

是的,它确实有一个我注释掉了,它仍然只加载iPad版本。 – George

回答

0

对于初学者:请确保你不要在你的AboutController覆盖笔尖初始化。

如果没有,请尝试清理您的项目(同时删除您的应用程序的文件夹~/Library/Developer/Xcode/DerivedData)。也从设备上卸载应用程序,然后重新生成。

+0

尝试了所有这一切,它仍然加载iPad的xib。 Arrhhh! – George