Размещение универсальных приложений в XCode 4

#ios #xcode4 #universal

#iOS #xcode4 #Универсальный

Вопрос:

Я пытаюсь выполнить основные шаги по созданию универсального приложения (для iphone / ipad) в Xcode 4. Я не хочу использовать INterface Builder, если это возможно, и я хочу уйти от громоздких инструкций if:

 if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
  

Я создаю «проект на основе окон», чтобы получить универсальный шаблон, предоставляемый Apple. Это дает мне три делегата приложений, причем iPhone и iPad имеют свои собственные XIBS внутри своих определенных папок.

Теперь я хотел бы добавить контроллер просмотра, поэтому я создаю основной «MasterViewController» и две подклассовые версии «MasterViewController_iPhone» и «MasterViewController_iPad». Я не создаю XIBS ни с одним из них. (Нужно ли мне это?)

Вот где я запутался. В главном делегате приложения я размещаю код

 [self.window makeKeyAndVisible];
  

Я не добавляю никакого другого кода, позволяя делегатам подклассов приложений создавать экземпляры своих соответствующих контроллеров просмотра. Например, в делегате приложения iphone я размещаю:

 myVC_iPhone = [[MasterViewController_iPhone alloc] initWithNibName:nil bundle:nil]; 
[self.window addSubview: myVC_iPhone];
  

Но это выдает мне ошибку:

 Incompatible pointer types sending 'MasterViewController_iPhone *' to parameter of type 'UIView *'
  

Я упускаю здесь что-то основное. Возможно, мои соглашения об именовании неверны; возможно, makeKeyAndVisible не должно быть в главном делегате приложения; возможно, мне нужны XIBS для каждого контроллера представления. Кто-нибудь может подтолкнуть меня сюда? Спасибо!

Ответ №1:

addSubview: принимает UIView в качестве параметра, а не окружающий его контроллер представления. Вы должны быть в порядке с использованием [self.window addSubview: myVC_iPhone.view]; .

Ответ №2:

Как насчет добавления вашего контроллера просмотра в качестве rootViewController

 self.window.rootViewController = myVC_iPhone;