2011-12-23 1 views
1

Я изучал учебные пособия о том, как сделать приложение для iPhone универсальным, чтобы оно работало на iPad. Однако, когда я пытался реализовать это, я немного застрял, так как Xcode изменил справедливую сумму, и учебники выглядят устаревшими. До сих пор я сделал следующее:Как я могу сделать приложение для iPhone в универсальном приложении (совместимом с iPhone и iPad)?

Я обновил устройства должен быть установлен в Юниверсал:

enter image description here

Я также обновил мое приложение класс делегата следующим образом:

// 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]; 
} 

I также создали два дополнительных файла .xib:

  • TabOne_ViewController (iPad) .x И.Б.
  • TabTwo_ViewController (IPAD) .xib

Наконец я попытался установить класс по TabOne_ViewController(iPad).xib быть TabOne_ViewController.h & TabOne_ViewController.m. А также TabTwo_ViewController(iPad).xib будет TabTwo_ViewController.h & TabTwo_ViewController.m. Однако я не смог этого сделать.

Я что-то не так понял? Есть ли дополнительные шаги, которые я пропустил?

EDIT:

Когда я имел в виду не в состоянии выбрать класс я имею в виду в IB:

enter image description here

Не будучи в состоянии связать класс в файл .xib Я не могу связать все IBOutlets & IBActions.

+0

Что именно не работает? – zpasternack

+0

Не могли бы вы подробнее объяснить, что означает «Как бы я не мог это сделать»? Что это не работает? – sergio

+0

Можете ли вы более четко узнать, что вы точно знаете? Почему он не работает? (Я имею в виду, что пошло не так? Не можете ли вы выбрать файл, или вы получите сообщение об ошибке или ...?) – CyberK

ответ

1

В XIb вы попытались изменить класс представления. Но вы должны изменить класс File's Owner

1

вы идете в целевой нажмите на проект, дать в Summery: Device: "Универсальный"

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]; 
} 

Вместо этого кода вы попробуете этот код следующим образом:

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] отвечаетSoSelector: @selector (userInterfaceIdiom)]? [[UIDevice currentDevice] userInterfaceIdiom]: UIUserInterfaceIdiomPhone)'. Но первый блок кода будет работать на iOS <3.2. –