2012-06-20 2 views
1

Я разрабатываю приложение. Я создаю Универсальное приложение, используя модель приложения Single View Based. Итак, мне нужно создать новый класс. Но он дает только один xib. Мне нужны два xibs для iPhone и iPad. Скажите, пожалуйста, как создать два xib для одного класса.Как создать новый UIViewController в универсальном приложении

ответ

3

Создать новый с таким же именем .. позволяет предположить, ваше мнение имя контроллера «NewViewController» .. Ваш XIB будет NewViewController~ipad для IPad и NewViewController~iPhone для Iphone .. поэтому, когда вы реализуете initWithNibName просто написать базовое имя для вас xib, который равен NewViewController, и iOS позаботится о вызове совпадения xib на основе текущей используемой платформы .. и не забудьте назначить пользовательский класс для владельца файла в новом xib как ваш новый класс, как изображение ниже.

enter image description here

Для создания нового XIB проверьте эти изображения:

enter image description here

enter image description here

+0

Это значит, что нам нужно создать файлы 2.h и файлы 2.m с тем же именем. Я исправлю? – user1400581

+0

Нет .. один .h и один .m, и два xib. снова прочитайте мой ответ –

+0

Как создать xib с файлами .h и .m. – user1400581

0

Malek_Jundi имеет четкое руководство о том, как создать и загрузить файл .nib для Айфона и Ipad.

Если вы хотите создать другой класс для каждого случая (iPhone или IPad), вы можете использовать IF заявление, как это:

UIViewController *target; 
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) { 
    target = [[NewViewController alloc] initWithNibName:@"NewViewController" bundle:[NSBundle mainBundle]]; 
} else { 
    target = [[NewViewController_ipad alloc] initWithNibName:@"NewViewController" bundle:[NSBundle mainBundle]]; 
} 

Но я слишком ленив, чтобы ввести «IF» утверждение неоднократно в моем коде создать определенный класс для iphone/ipad. У меня есть альтернативный способ:

- (Class)idiomClassWithName:(NSString*)className 
{ 
    Class ret; 
    NSString *specificName = nil; 
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) { 
     specificName = [[NSString alloc] initWithFormat:@"%@_ipad", className]; 
    } else { 
     specificName = [[NSString alloc] initWithFormat:@"%@_iphone", className]; 
    } 
    ret = NSClassFromString(specificName); 
    if (!ret) { 
     ret = NSClassFromString(className); 
    } 
    return ret; 
} 

- (void)createSpecificNewController 
{ 
    Class class = [self idiomClassWithName:@"NewViewController"]; 
    UIViewController *target = [[class alloc] initWithNibName:@"NewViewController" bundle:[NSBundle mainBundle]]; 
    //... 
} 
Смежные вопросы