2011-02-05 17 views
11

iPhoneとiPadの両方で動作するアプリを作ろうとしています。私は両方のインターフェイスを互換性にする方法を探しています。アプリケーションが読み込まれると、私はテーブルビューを表示しています。デバイスに基づいて異なるペン先をロードするにはどうしたらいいですか?私はこれを使ってペン先を切り替える。アプリのiPhone版とiPad版の作成方法は?

if ([[UIDevice currentDevice] respondsToSelector:@selector(userInterfaceIdiom)]) 
    { 
     if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) 
     { 
      device = @"iPad"; 
     } 
     else 
     { 
      device = @"iPhone"; 
     } 

    } 

MainWindow.xibでは、iPhone用のビューコントローラからビューがロードされていると表示されます。デバイスに基づいて動的にすることはできますか?すなわち、私は、デバイスに基づいて異なるペン先のアプリの最初から表示したい。おかげさまで

答えて

6

あなたは同様の方法でそれを行うことができます:iPhone/iPadアプリとしてアプリのタブを構築

1-設定された目標の家族情報にユニバーサルアプリを作るための

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad){ 
    mainMenu = [[MainMenu alloc] initWithNibName:@"MainMenuiPad" bundle:nil]; 
}else{ 
    mainMenu = [[MainMenu alloc] initWithNibName:@"MainMenu" bundle:nil]; 
} 
+0

感謝を。インターフェイスビルダーでMainWindow.xibを開くと、私はiPhone用のUIである「ビューがabc_iPhoneAppViewControllerからロードされた」と言います。どうすればiPadに変更できますか? IBまたはコードで。詳細な例を教えてください。ありがとう – Nikil

5

、。

2メインウィンドウからウィンドウを削除します。

3 iPhone用にxib 1を、iPad xibを選択してiPad用にxib 1を2つ追加します。

4-これらのxibのコントローラファイルとしてappDelegateクラスを作成します。

5これらのxibs上にウィンドウを追加し、コントローラまたはナビゲーションコントローラを表示し、IB Inspectorによってload nib名とコントローラファイルを設定します。これは最初のビューです。

6-テーブルビューやその他のコントロールを持つiPadとiPhone用のdiffernet xibを作成します。

7メイク単一contollerファイルまたはあなたがこの方法でappDelegateクラスでXIBをロードする必要が8-今、他の条件

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad){ 

場合は、このことによって、デバイスをチェックする必要が同じのための異なるデバイスごとに異なるのcontrolerファイル
メインnibファイルのベース名[NSMainNibFile]:MainWindow_iPhone
didFinishL--

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad){ 

    // load your nib for iPad here which having view controler or navigation controller as well window. 
}else{ 
    //load nib for iPhone. 
} 
0

はあなたのInfo.plistでこれを試してみてくださいメインのnibファイルのベース名(iPad)[NSMainNibFile~ipad]:MainWindow_iPad

これはあなたに役立ちます。

27

実は、Appleはこのすべて自動的に、ちょうどあなたのNIBファイルの名前ん:

MyViewController~iphone.xib // iPhone 
MyViewController~ipad.xib // iPad 

をし、コードの最小量を使用してビューコントローラをロードする:返信用

[[MyViewController alloc] initWithNibName:nil bundle:nil]; // Apple will take care of everything 
+1

+1は大いに役立った – Jomoos

+1

NB:誰かが最近メーリングリストに投稿したように...大文字小文字を正しく入力するように注意してください!アップルの特別なコードでは大文字と小文字が区別されます。「iPhone」や「iPad」と綴られていると、何も説明されていないにもかかわらず黙って失敗します。( – Adam

+0

@Adamこれはios5では機能しません。私はios6で試してみましたが、うまく動作しています。 – Heena

関連する問題