Выберите вид для запуска для iPad и iPhone - PullRequest
0 голосов
/ 15 декабря 2011

мое первое приложение, предназначенное только для iPhone, я решил также реализовать возможность использования на iPad, и первым делом я хотел выбрать вид, который будет использоваться при открытии iPhone или iPad, вмой делегат я написал:

NSString *devy = [[UIDevice currentDevice]model];
if ([devy isEqualToString:@"iPad"]) {
    [window addSubview:viewController.viewCpuIpad];
    [window makeKeyAndVisible]; 
} else {
    [window addSubview:viewController.view];
    [window makeKeyAndVisible];    
}

Когда с iPhone все в порядке, но когда я открываю его на iPad, отображается только пустой экран .... где не так?

спасибо

Ответы [ 2 ]

0 голосов
/ 15 декабря 2011

Когда вы запускаете в iPad вместо звонка,

[окно addSubview: viewController.viewCpuIpad];

попробуй как,

viewController.view = viewCpuIPad;

[окно addSubview: viewController.view];

Мое предложение заключается в том, что вы не обновляете свойство viewController.view при запуске на iPad.

По умолчанию при создании пера viewController.view устанавливается на представление пера, которое отображается для iPhone.

Для iPad вы должны обновить это свойство [viewcontroller view] до указанного вами представления. Иначе, как предложил Хоси, это также хороший способ иметь два разных файла Nib, так что вы можете загрузить необходимый NIB в зависимости от условия.

Надеюсь, это поможет:)

0 голосов
/ 15 декабря 2011

Рекомендованный Apple способ (взятый из универсального шаблона проекта приложения Xcode):

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
    // Override point for customization after application launch.
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
        self.viewController = [[[ViewController alloc] initWithNibName:@"ViewController_iPhone" bundle:nil] autorelease];
    } else {
        self.viewController = [[[ViewController alloc] initWithNibName:@"ViewController_iPad" bundle:nil] autorelease];
    }
    self.window.rootViewController = self.viewController;
    [self.window makeKeyAndVisible];
    return YES;
}

Если вы не хотите использовать IB, вы можете создать свое представление в методе loadView контроллера вида, например:

- (void)loadView
{
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
        self.view = // create view for iPad.
    } else {
        self.view = // create view for iPhone.
    }
}

(UI_USER_INTERFACE_IDIOM () - это макрос для поддержки iOS 3.1 и более ранних версий.)

...