Полная/облегченная версия iOS с использованием нескольких окон

У меня есть две цели в моем проекте Xcode 4.3. Каждая цель имеет свой собственный файл X-info.plist. Я хотел бы иметь два окна (MainWindow.xib), одно для полного приложения и одно для облегченной версии. Я установил Main Interface для каждой цели, а также Main nib file base name в X-info.plist, но это не работает. Что я пропустил? Спасибо


person xpepermint    schedule 23.02.2012    source источник
comment
Я разместил ссылку ниже. Если это не отвечает на ваш вопрос, пожалуйста, объясните больше о том, что именно не работает.   -  person Rok Jarc    schedule 23.02.2012


Ответы (2)


Вы можете легко иметь одинаковые имена для файлов .xib для разных целей. Просто убедитесь, что два файла с одинаковыми именами не являются членами одной и той же цели. Они должны быть размещены в разных каталогах на HD и в разных группах в проекте.

Существует также известная ошибка с IB (ресурсы изображений и т. д.) и несколькими целями: см. больше на Две цели с отдельными .xib (ресурсы изображений с одинаковыми именами)

Но эта информация предназначена для XCode 4.2.x, не уверен, что она действительна для XCode 4.3.

person Rok Jarc    schedule 23.02.2012
comment
Хм... Кажется, я не понимаю первую часть. Вы говорите, что я могу создать два файла с одинаковым именем (например, RootViewController.xib)? XCode не позволяет мне это сделать. - person xpepermint; 23.02.2012
comment
Так и должно быть, я постоянно им пользуюсь. Вы должны хранить их в отдельных каталогах на диске и в отдельных группах в проекте. Они также должны принадлежать разным целям (один для полного приложения, один для облегченного приложения). - person Rok Jarc; 23.02.2012
comment
Когда вы добавляете файлы в проект, вы можете определить, к какой цели он принадлежит (он может принадлежать всем им или только некоторым). Для файлов, которые уже есть в проекте, вы можете изменить целевое членство, выбрав вид-›утилиты-›инспектор файлов. - person Rok Jarc; 23.02.2012
comment
Аааа... да... забыл. Я использую xCode некоторое время :). - person xpepermint; 23.02.2012

Вы можете добавить макрос препроцессора в цель облегченной версии LITE=1. Затем в вашем коде, когда вы хотите выполнить что-то по-другому, вы можете использовать #ifdef, например:

NSString *mainWindow;
#ifdef LITE
    mainWindow = @"MainWindow_Lite";
#else
    mainWindow = @"MainWindow_Full";
#endif
// Load nib with the name mainWindow.
// Or load ads in the lite version
// Or disable functionality in the lite version
//

Если вы хотите избежать этого и хотите использовать одно и то же имя для двух перьев, вам нужно добавить один из них в качестве члена полной цели, а другой - в качестве члена облегченной цели.

person sch    schedule 23.02.2012