Приложение iPhone, преобразованное в приложение iPad, показывает iPhone xib, а не iPad xib - PullRequest
0 голосов
/ 07 марта 2012

Я в процессе преобразования приложения для iPhone в универсальное приложение.

  • Я изменил все настройки xCode и добавил новый MainWindow-iPad.xib
  • Я подключил все ссылки на конструктор интерфейса (например, MainWindow-iPad к соответствующему классу iPad ViewController, окну и т. Д.)
  • Я добавил новый класс iPad для контроллера открытия представления, объявил его в своем файле AppDelegate.h и синтезировал их в моем файле AppDelegate.m:

    UIWindow * window; UIWindow * windowiPad; AppViewController * viewController; AppViewControlleriPad * viewControlleriPad;

  • в делегате приложения я проверяю, на каком устройстве я работаю, и загружаю соответствующий класс:

    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {      
    // Override point for customization after application launch.
    navController = [[UINavigationController alloc] initWithRootViewController:viewControlleriPad];
    // Add the view controller's view to the window and display.
    [windowiPad addSubview:navController.view];
    [windowiPad makeKeyAndVisible];
    
    [navController setNavigationBarHidden:YES animated:NO];
    
    
    } else {
    //I am an iPhone! 
    
    // Override point for customization after application launch.
    navController = [[UINavigationController alloc] initWithRootViewController:viewController];
    // Add the view controller's view to the window and display.
    [window addSubview:navController.view];
    [window makeKeyAndVisible];
    
    [navController setNavigationBarHidden:YES animated:NO];
    }
    

И все, кажется, работает нормально - за исключением того, что он по-прежнему загружает файл iPhone nib / xib AppViewController.xib вместо AppViewControlleriPad.xib. Вы можете запросить дополнительную информацию, но я не могу понять, как заставить его загружать AppViewControlleriPad.xib при запуске iPad, а не iPhone / оригинального xib-файла.

Я подумал, возможно, наивно, что если файл xib имеет то же имя, что и класс контроллера представления, то ViewController будет использовать его в качестве xib.

Как я могу это исправить, чтобы загрузить правильное XIB для правильного устройства?

Ответы [ 2 ]

3 голосов
/ 07 марта 2012

У вас есть орфографическая ошибка - правильный суффикс для ресурсов iPad - "~ ipad" вместо "-iPad". С помощью «~ ipad» ваши ресурсы будут загружаться автоматически в зависимости от устройства.

И вам, вероятно, не нужно другое UIWindow для ваших контроллеров iPad. Вы можете использовать то же самое окно в начальной точке приложения. Хорошей практикой также является наличие одного контроллера представления (внутри вы можете выполнять некоторые специальные действия для разных устройств) и двух перьев (один «обычный» и второй с суффиксом «~ ipad»). В редких случаях, если поведение контроллера полностью отличается, вы можете использовать два контроллера представления.

0 голосов
/ 07 марта 2012

Это может быть связано с тем, что вы не подключили контроллер представления iPad к владельцу файлов в IB.

...