2011-12-23 4 views
1

私はiPhoneアプリを普遍的なものにするためのチュートリアルを見ていて、iPad上で動作するようにしています。しかし、私がこれを実装しようとすると、Xcodeがかなりの量を変更し、チュートリアルが古くなってしまったので、ちょっと固まったようです。これまでのところ、私は次のことを行っている:iPhoneアプリをユニバーサルアプリ(iPhone&iPad互換)にするにはどうしたらいいですか?

私はユニバーサルに設定するデバイス更新:私は

// Set up tab 1 
TabOne_ViewController *tabOne = [TabOne_ViewController alloc]; 
UIViewController *tabOneViewController; 

// Set up tab 2 
TabTwo_ViewController *tabTwo = [TabTwo_ViewController alloc]; 
UIViewController *tabTwoViewController; 

// Determine which UI to load for each tab 
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) 
{ 
    tabOneViewController = [tabOne initWithNibName:@"TabOne_ViewController" bundle:nil]; 
    tabTwoViewController = [tabTwo initWithNibName:@"TabTwo_ViewController" bundle:nil]; 
} 
else 
{ 
    tabOneViewController = [tabOne initWithNibName:@"TabOne_ViewController(iPad)" bundle:nil]; 
    tabTwoViewController = [tabTwo initWithNibName:@"TabTwo_ViewController(iPad)" bundle:nil]; 
} 

:私もそうのように私のアプリのデリゲートクラスを更新した

enter image description here

  • TabOne_ViewController(iPad).xibファイルを2つ追加しました。 IB
  • TabTwo_ViewController(iPadは)最後に、私はTabOne_ViewController.h & TabOne_ViewController.mするTabOne_ViewController(iPad).xib上のクラスを設定しようとしました

を.xib。またTabTwo_ViewController(iPad).xibTabTwo_ViewController.h & TabTwo_ViewController.mとすることもできます。しかし、私はそうすることができませんでした。

どこか間違っていますか?私が逃した余分なステップはありますか?

EDIT:.xibファイルにクラスをリンクできずに

enter image description here

は私がIBに意味クラスを選択することができないに言及していましたIBOutlets & IBActionsのすべてをリンクすることはできません。

+0

正確に何が動作していないのですか? – zpasternack

+0

"私はそうすることができませんでした"ということをもっと詳しく説明できますか?何がうまくいかないのですか? – sergio

+0

あなたは正確な問題が何であるかをより明確にすることができますか?なぜそれは働いていないのですか? (間違ったことは何ですか?ファイルを選択できないのですか、エラーが出るのですか?...) – CyberK

答えて

1

をビューのクラスを変更しようとしました。しかし、あなたはクラスを変更する必要がありますFile's Owner

1

あなたは、プロジェクトをクリックして夏に与えるターゲットに行く: デバイス:「ユニバーサル」

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) 
{ 
tabOneViewController = [tabOne initWithNibName:@"TabOne_ViewController" bundle:nil]; 
tabTwoViewController = [tabTwo initWithNibName:@"TabTwo_ViewController" bundle:nil]; 
} 
else 
{ 
tabOneViewController = [tabOne initWithNibName:@"TabOne_ViewController(iPad)" bundle:nil]; 
tabTwoViewController = [tabTwo initWithNibName:@"TabTwo_ViewController(iPad)" bundle:nil]; 
} 

代わりにこのコードを次のようにこのコードを試してみてください。XIBで

UIDevice* thisDevice = [UIDevice currentDevice]; 
if(thisDevice.userInterfaceIdiom == UIUserInterfaceIdiomPad) 
{ 
    // iPad 
    tabOneViewController = [tabOne initWithNibName:@"TabOne_ViewController(iPad)" bundle:nil]; 
tabTwoViewController = [tabTwo initWithNibName:@"TabTwo_ViewController(iPad)" bundle:nil]; 

} 
else 
{ 
    // iPhone 
    tabOneViewController = [tabOne initWithNibName:@"TabOne_ViewController" bundle:nil]; 
tabTwoViewController = [tabTwo initWithNibName:@"TabTwo_ViewController" bundle:nil]; 
} 
+0

プリプロセッサがその仕事をした後、これは#define UI_USER_INTERFACE_IDIOM()([[UIDevice currentDevice] respondsToSelector:@selector(userInterfaceIdiom)]?[[UIDevice currentDevice] userInterfaceIdiom]:UIUserInterfaceIdiomPhone)とほとんど同じコードです。しかし、最初のコードブロックはiOS <3.2で動作します。 –

関連する問題