0

シミュレーターで正常に動作するユニバーサル アプリケーションがありますが、実際のデバイス (4S および第 3 世代の iPad) に配置すると、ビュー コントローラー インターフェイス (「EditNameViewControlleriPhone」、iPhone が名前の一部であるという事実を無視します) は、私はiPad xibも持っていますが、iPhoneバージョンです。

これは、私がどのように名前を付けたかのスクリーンショットです。

ここに画像の説明を入力

私の 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 に答える