Несколько версий файла .nib - PullRequest
0 голосов
/ 03 октября 2011

Есть ли способ иметь два файла .nib с одинаковым именем?Я использую Xcode 4, и я хочу иметь несколько версий интерфейса, а именно: MainMenu.xib в разных папках, чтобы я мог получить к ним доступ с помощью:

[[MainMenuViewController alloc] initWithNibName:@"MainMenu" bundle:skinBundle]

, где мой skinBundle будет комплектом из пути:

skinBundle = [NSBundle bundleWithPath:[[NSBundle mainBundle] pathForResource:@"skinFolderPath" ofType:nil]

Когда я создаю приложение, все каталоги сглаживаются, в результате получается только один MainMenu.nib.Когда я добавляю папки как ссылки на папки , дерево каталогов сохраняется, но ни один из файлов .xib не компилируется в .nib.

Есть ли способ достичь этого?Или, может быть, лучший способ управления несколькими версиями перьев?

1 Ответ

1 голос
/ 03 октября 2011

Вы можете создать дополнительные цели в XCode, называемые «пакеты ресурсов». Они имеют структуру пакета (например, пакеты .app или .framework), но не содержат двоичного кода. Добавьте свои ресурсы в эти пакеты, добавьте продукты этих целей на стадию «Копировать ресурсы пакета» вашей главной цели, а затем используйте эти пакеты во время создания экземпляра, используя следующий код:

NSString *skinBundlePath = [[NSBundle mainBundle] pathForResource: @"MyBundle" ofType: @"skin"]; // or whatever it's called
if (skinBundlePath) {
    NSBundle *skinBundle = [NSBundle bundleWithPath: skinBundlePath];
}

Приведенный выше фрагмент предполагает, что вы установили для расширения оболочки целевого объекта значение "skin" и назвали его "MyBundle".

В Xcode 3 (у меня нет 4 подручных), вы можете добавить цель, перейдя в Project -> New Target. Выберите «Loadable Bundle» из Mac OS X (даже если вы используете iOS.) В верхней части моей головы, вам не нужно никаких дополнительных настроек для его работы, но вы должны позаботиться о том, чтобы ресурсы оказались в правильный пакет, когда вы добавляете их.

Если это звучит слишком сложно, также возможно создать новый проект, который создает загружаемый пакет, и сделать это зависимостью от вашего основного проекта; снова добавьте продукт сборки подпроекта к этапу «Копирование комплекта ресурсов» вашего основного проекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...