Универсальные шаблоны приложений Xcode и переопределение didFinishLaunchingWithOptions

Я пытаюсь создать свое первое универсальное приложение для iOS, используя шаблоны Xcode по умолчанию для оконного приложения и устанавливая для семейства устройств значение «Универсальное». (Я использую Xcode 4, но я считаю, что шаблоны почти идентичны для предыдущих версий Xcode.)

При этом создается общий делегат приложения, а также конкретные делегаты приложения для iPhone и iPad.

Поскольку iPad должен будет загрузить SplitViewController при запуске приложения, а iPhone — загрузить RootViewController (табличное представление), я решил попробовать переопределить метод didFinishLaunchingWithOptions в делегатах приложения для конкретного устройства, как это для iPhone:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    [super application:application didFinishLaunchingWithOptions:launchOptions];

    RootViewController *rootViewController = (RootViewController *)[_navController topViewController];
    rootViewController.context = [self managedObjectContext];

    [_window addSubview:_navController.view];

    return YES;
}

Однако, поскольку Xcode помещает файлы делегатов приложения для конкретного устройства в группу «iPhone» или «iPad», я получаю сообщение об ошибке, говорящее, что файл «RootViewController.h» не найден... несмотря на попытку импортировать его с помощью:

#import "RootViewController.h"

Есть ли способ решить это, или я иду по этому пути неправильно? Я бы не стал переносить файл «RootViewController.h» в группу iPhone, так как думаю, что он будет использоваться и на iPad.


person Jim Rhoades    schedule 22.02.2011    source источник


Ответы (1)


Вы должны следовать этой модели: http://www.kotancode.com/2011/04/05/ios-universal-apps/ и вы должны импортировать "RootViewController_iPhone.h"

person jlsuttles    schedule 14.04.2011
comment
Спасибо за ответ. В моем текущем приложении я использую if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad), где это необходимо... но я попробую этот другой подход в будущем приложении. - person Jim Rhoades; 29.04.2011