Не могу использовать UISPLitViewController в универсальном приложении?

StackOverflow https://stackoverflow.com/questions/3481961

Вопрос

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

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

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

  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;
}
Это было полезно?

Решение

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

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

В-третьих, ваши DidfiniShlaunchingWittions должны выглядеть так:

- (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;
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top