Выкладка универсальных приложений в XCode 4

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

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {

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

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

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

[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 не должен быть в делегате главного приложения; возможно, мне нужны XIB для каждого контроллера представления. Кто-нибудь может подтолкнуть меня сюда? Спасибо!

2 ответа

Решение

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

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

self.window.rootViewController = myVC_iPhone;
Другие вопросы по тегам