Не можете использовать UISplitViewController в универсальном приложении? - PullRequest
6 голосов
/ 14 августа 2010

У меня проблемы с работой UISplitViewController в приложении Universal, где я уже закодировал часть iPhone.В качестве метода устранения неполадок я решил начать с нового проекта и просто попытаться выполнить одно действие, которое вызывает проблему, и оно все еще остается.

Если я создаю приложение Universal и в контроллере iPad создаю разделениеview (либо в XIB, либо в коде), затем он выглядит как черный (если я не установил цвет фона).Если я сделаю это в приложении только для iPad, оно будет отображаться просто отлично.

Я был бы признателен, если бы кто-нибудь смог проверить это самостоятельно и посмотреть, получат ли они то же самое, или скажите мне, где яm идет не так.

  1. В Xcode создайте универсальное «оконное» приложение.
  2. Войдите в контроллер iPad и вставьте код внизу.

Я получаю черный экран, а не разделенный вид.Тот же код работает в проекте только для iPad.Что я делаю неправильно или что настроено неправильно?

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    
    UISplitViewController *split = [[UISplitViewController alloc] initWithNibName:nil bundle:nil];

    UIViewController *vc1 = [[UIViewController alloc] initWithNibName:nil bundle:nil];
    vc1.view.backgroundColor = [UIColor redColor];

    UIViewController *vc2 = [[UIViewController alloc] initWithNibName:nil bundle:nil];
    vc2.view.backgroundColor = [UIColor blueColor];

    split.viewControllers = [NSArray arrayWithObjects:vc1, vc2, nil];

    [window addSubview:split.view];
    [window makeKeyAndVisible];

    [vc1 release];
    [vc2 release];
    [split release];

    return YES;
}

1 Ответ

3 голосов
/ 17 августа 2010

Прежде всего, вы не должны освобождать разделенное представление в didFinishLaunchingWithOptions.Добавьте его к своему интерфейсу (под UIWindow) и выпускайте только на dealloc.Во-вторых, подкласс UISplitViewController выглядит следующим образом:

@interface MySplitViewController : UISplitViewController
{
}
@end
@implementation MySplitViewController
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return YES;
}
@end

В-третьих, ваши didFinishLaunchingWithOptions должны выглядеть следующим образом:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    

    split = [[MySplitViewController alloc] init];

    UIViewController *vc1 = [[UIViewController alloc] init];
    vc1.view.backgroundColor = [UIColor redColor];

    UIViewController *vc2 = [[UIViewController alloc] init];
    vc2.view.backgroundColor = [UIColor blueColor];

    split.viewControllers = [NSArray arrayWithObjects:vc1, vc2, nil];

    [window addSubview:split.view];
    [window makeKeyAndVisible];

    [vc1 release];
    [vc2 release];

    return YES;
}
...