6

iPhone部分をすでにコーディングしているユニバーサルアプリでUISplitViewControllerを動作させるのに問題があります。トラブルシューティングの方法として、私は新しいプロジェクトから始めて、問題を引き起こしている1つのアクションを実行しようと決心しましたが、それでも問題は解決しません。

ユニバーサルアプリを作成し、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;
}
4

1 に答える 1

3

まず、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;
}
于 2010-08-17T09:07:38.043 に答える