0

我有一个在模拟器上运行良好的通用应用程序,但是当我将它放在实际设备(4S 和第 3 代 iPad)上时,视图控制器界面(“EditNameViewControlleriPhone”,忽略 iPhone 是名称的一部分这一事实)仅显示为iPhone 版虽然我也有 iPad xib。

这是我如何命名东西的屏幕截图:

在此处输入图像描述

我的 SettingViewController 中的一个按钮会调出 EditName 界面。这是他的代码:

-(IBAction)editclass{
    EditNameViewControlleriPhone*vc2 = [[EditNameViewControlleriPhone alloc] init];
    vc2.delegate = self;
    [self presentModalViewController:vc2 animated:YES];
}

-(void)dismiss{
    [self dismissModalViewControllerAnimated:YES];
}

这段代码是错误的,还是我遗漏了一些命名约定,或者是别的什么?对不起,如果这真的很简单——我是 Xcode 的新手。谢谢

4

2 回答 2

1

您可以使用以下代码手动加载正确的界面:

-(IBAction)editclass{
    EditNameViewControlleriPhone *vc2;
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
        vc2 = [[EditNameViewControlleriPhone alloc] initWithNibName:@"EditNameViewControlleriPhone_iPhone" bundle:nil];
    } else {
        vc2 = [[EditNameViewControlleriPhone alloc] initWithNibName:@"EditNameViewControlleriPhone_iPad" bundle:nil];
    }
    vc2.delegate = self;
    [self presentModalViewController:vc2 animated:YES];
}

if 子句检查您当前的设备是 iPad 还是 iPhone。该子句中的初始化程序使用正确的 xib 文件实例化 viewController。


或者,您可以通过遵循简单的命名方案将其留给系统执行;

EditNameViewControlleriPhone~iphone.xib 适用于您的 iPhone 版本 EditNameViewControlleriPhone~ipad.xib 适用于您的 iPad 版本

这样,您的代码可能会保持原样。


每当您发现文件在设备或模拟器上不可用时存在差异,反之亦然,通常的原因是大写字母有问题。模拟器通常不区分大小写(取决于您的 OSX 文件系统),设备区分大小写(始终)。


最后但并非最不重要的一点是,当事情仍然在没有合理解释的情况下仍然存在错误时,构建清理通常会产生奇迹。

于 2012-08-16T22:03:09.900 回答
0

在 下Target,有一个名为 的选项卡Summary,检查您的界面以控制您使用的是正确的界面

于 2012-08-16T21:48:57.620 回答