Сбой при загрузке основной xib на iPad только в универсальном приложении? - PullRequest
0 голосов
/ 07 декабря 2011

У меня есть универсальное приложение, но эта проблема, похоже, касается только iPad, а не iPhone, поскольку версия для iPhone загружает правильный XIB.

Так что проблема в том, что она не загружает мою основную версию.XIB для моего приложения. Я назвал XIB следующим образом:

  1. Для iPhone: MyViewController.xib

    1. Для iPad: MyViewController_iPad.xib

Также я удалил свой MainWindow.xib, потому что в проекте шаблона для универсального приложения он нигде не показывает MainWindow.xib.

Вот какЯ пытаюсь загрузить представление при запуске приложения:

self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
        self.viewController = [[[ocrapiViewController alloc] initWithNibName:@"MyViewController" bundle:nil] autorelease];
    } else {
        self.viewController = [[[ocrapiViewController alloc] initWithNibName:@"MyViewController_iPad" bundle:nil] autorelease];
    }
 self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];
return YES;

Это информация о сбое: SIGABRT в этой строке [self.window makeKeyAndVisible];

И этожурнал сбоев:

2011-12-07 07:37:46.560 ocrapi[763:607] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not load NIB in bundle: 'NSBundle </var/mobile/Applications/29F4CD7A-149E-46EA-B280-3D188PP19D17/.app> (loaded)' with name 'MyViewController_iPad''

Edit1 : Вот сообщение:

warning: No copy of <No file name> found locally, reading from memory on remote device.  This may slow down the debug session.

Также, если я нажму на мои продукты, то покажу в Finder, затем покажусодержимое пакета, MyViewController.xib или MyViewController_iPad.xib не существует.Это должно быть так?

1 Ответ

2 голосов
/ 07 декабря 2011

Убедитесь, что ваше перо действительно действительно называется MyViewController_iPad.xib, с точной заглавной буквы.

Убедитесь, что файл xib находится в списке объектов вашей цели, которые будут скопированы в приложение при сборке.*

Наконец, убедитесь, что в вашем файле Info.plist нет настроек основного пера.

О, и еще одна вещь.Код не нужен:

if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
    self.viewController = [[[ocrapiViewController alloc] initWithNibName:@"MyViewController" bundle:nil] autorelease];
} else {
    self.viewController = [[[ocrapiViewController alloc] initWithNibName:@"MyViewController_iPad" bundle:nil] autorelease];
}

Просто позвоните initWithNibName:@"MyViewController".Если перо вашего iPad называется MyViewController ~ ipad.xib (обратите внимание на твидл, обратите внимание на строчный «ipad»), оно будет выбрано автоматически, когда вы находитесь на iPad.

...