Выкладка универсальных приложений в 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;