动态加载xib但显示错误

时间:2011-09-23 17:24:35

标签: iphone xcode ipad

我有一个通用应用程序,我试图与之共享一个viewController代码。我有这个:

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的xib,但似乎总是加载iPad版本。我知道这是因为在iPhone的xib文件中,我手动添加了不同的背景图像,但它从未显示过。在iPhone模拟器中,它显示的是不在屏幕上的iPad版本。

此外,如果我单步执行控制器中的代码,它确实显示负载是iPhone,但显示的是所有iPad对象。在iPhone xib中,我确实将文件所有者设置为AboutController。

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

...地理位置

1 个答案:

答案 0 :(得分:0)

对于初学者:请确保不要覆盖AboutController

中的nib初始化

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