4

iOS の奇妙な動作だと思われるものに出くわしました。StackOverflow を検索しても、私の問題と同じものは見つかりませんでした。

基本的に、デバイス修飾子 (~iphone と ~ipad) を持つ 2 つの .xib ファイルがあり、iPad で (つまり、iPhone シミュレーター ウィンドウ内で) iPhone アプリ (ユニバーサルではない) を実行すると、~ipad xib をロードしようとします。 ~iphone xib ではなくファイルです。

これはバグですか?~iphone xib がロードされることを期待します。実際のデバイスは iPad ですが、iPhone をエミュレートしていますね。それで、確かにiPhoneインターフェースファイルをロードする必要がありますか?

再現する手順:

  1. XCode で新しい iPhone (ユニバーサルではない) アプリを作成します - 「Single View」テンプレートを使用します。
  2. ViewController.xib の名前を ViewController~iphone.xib に変更します
  3. xib を複製して名前を変更し、ViewController~iphone.xib と ViewController~ipad.xib を作成します。
  4. この iPhone アプリを iPad シミュレーター内 (または実際の iPad デバイス) で実行します。~iPhone xib ではなく、~ipad XIB が読み込まれます。

この問題を回避する方法を提案できる人はいますか? 私の実際の XCode プロジェクトには複数のターゲット (1. iPhone のみのアプリ 2. iPad のみのアプリ) があるため、すべてのシナリオをサポートする必要があるため、デバイス修飾子を使用する必要があるため、複雑です。

4

1 に答える 1

0

ペン先を扱うときは、通常これを行います。

- (id)init
{
    if( [[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomiPhone )
    {
        nibNameString = @"mynib-iPhone";
    }
    else
    {
        nibNameString = @"mynib-iPad";
    }
    self = [super initWithnNibName:nibNameString bundle...
于 2012-08-15T07:53:35.747 に答える