#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;