2012-05-10 6 views
4

私は、私がiOSのいくつかの奇妙な動作であると思ったことを偶然見つけました - StackOverflowの検索は私の問題と全く同じです。正しい動作ですか? - iPad上で実行されているiPhoneアプリは〜ipadの拡張子を持つxibをロードします

基本的に、デバイス修飾子(〜iphoneと〜ipad)を持つ2つの.xibファイルがあり、iPad上でiPhoneアプリを実行すると(iPhoneシミュレータウィンドウ内で)、読み込みが試行されます〜ipad xibファイルではなく〜ipad xibファイルです。

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

ステップ:

  1. Xcodeで新しいiPhone(普遍的ではない)アプリを作成 - 'シングル表示' テンプレートを使用します。
  2. 重複
  3. iphone.xibのViewController〜へ
  4. 名前の変更ViewController.xib、あなたが今のViewController〜のiphone.xibとのViewController〜ipad.xibを持つよう
  5. 、XIBの名前を変更するファイル名を指定して実行iPadのシミュレータ内で、このiPhoneアプリ(または実際のiPadデバイスで)〜〜ipad XIBは〜iPhone xibではなく読み込まれます。

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

+1

私は、この動作を確認することができます。私は* ipad.xibの名前を* -ipad.xibに変更し、[UIDevice currentDevice]のコードで適切なxibファイルを選択してください.userInterfaceIdiom – skidr0w

答えて

0

ニブで作業するとき、私は通常、次の操作を行います。

- (id)init 
{ 
    if([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomiPhone) 
    { 
     nibNameString = @"mynib-iPhone"; 
    } 
    else 
    { 
     nibNameString = @"mynib-iPad"; 
    } 
    self = [super initWithnNibName:nibNameString bundle... 
+0

私はまた、あなたがiPadのペン先でなければならないときに、 。 iPadプロジェクトを作成してから、iPhoneプロジェクトのペン先をコピーするのではなく、それをあなたのiPhoneプロジェクトにコピーしてください。 – TigerCoding

関連する問題