0

私は現在、6 つのビューを持つアプリケーションを作成している最中です。各ビューは、デバイスの種類向きの組み合わせ専用です。意味がわからない場合は、6 つの組み合わせすべてにラベルを付けます。

  • iPhone4_(320x480) & ポートレート
  • iPhone4_(320x480) & 横向き
  • iPhone5_(320x568) & ポートレート
  • iPhone5_(320x568) & 横向き
  • iPad_(768x1024) & ポートレート
  • iPad_(768x1024) & 横向き

このすべての問題を経験するのは少しばかげているように思えますが、この状況では一種の必要です. とにかく、プログラミング ガイドの Apple のソリューションとTheAppCodeBlogにあるオンライン チュートリアルの方法を組み合わせて試してみました。

ViewController.m-->ViewDidLoad方法

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(orientationChanged:) name:@"UIDeviceOrientationDidChangeNotification" object:nil];

ViewController.m-->orientationChanged方法

- (void) orientationChanged:(NSNotification *)object
{
    UIDeviceOrientation deviceOrientation = [[object object] orientation];
    if (deviceOrientation == UIInterfaceOrientationPortrait && [UIScreen mainScreen].bounds.size.height == 480.0)
    {
        self.view = self.portrait4View;
    }
    else if ((deviceOrientation == UIInterfaceOrientationLandscapeLeft) || (deviceOrientation == UIInterfaceOrientationLandscapeRight)) && [UIScreen mainScreen].bounds.size.height == 480.0)
    {
        self.view = self.landscape4View;
    }
    else if (deviceOrientation == UIInterfaceOrientationPortrait && [UIScreen mainScreen].bounds.size.height == 568.0)
    {
        self.view = self.portrait5View;
    }
    else if ((deviceOrientation == UIInterfaceOrientationLandscapeLeft) || (deviceOrientation == UIInterfaceOrientationLandscapeRight)) && [UIScreen mainScreen].bounds.size.height == 568.0)
    {
        self.view = self.landscape5View;
    }
    else if (deviceOrientation == UIInterfaceOrientationPortrait && [UIScreen mainScreen].bounds.size.height == 1024.0)
    {
        self.view = self.portraitPadView;
    }
    else
    {
        self.view = self.landscapePadView;
    }

}

各ビューの Interface Builder セットアップ:

インターフェイスビルダー

次のエラーも表示されExpected identifierます。

ミニウィンドウ

アップデート

アプリを起動するたびに、黒い画面が表示されます。これが私のAppDelegate.m見た目です:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone && [UIScreen mainScreen].bounds.size.height == 568.0) {
        self.viewController = [[ViewController alloc] initWithNibName:@"ViewController_Portrait5" bundle:nil];
    }
    
    else if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone && [UIScreen mainScreen].bounds.size.height == 480.0) {
        self.viewController = [[ViewController alloc] initWithNibName:@"ViewController_Portrait4" bundle:nil];
    }

    else {
        self.viewController = [[ViewController alloc] initWithNibName:@"ViewController_PortraitPad" bundle:nil];
    }
}
4

1 に答える 1

1

関連するエラーExpected Identifierは、括弧が間違っているためです。あなたのif状態は次のようになります(そして、他のいくつかの状態でも同じエラーが表示されます):

else if (((deviceOrientation == UIInterfaceOrientationLandscapeLeft) || (deviceOrientation == UIInterfaceOrientationLandscapeRight)) && [UIScreen mainScreen].bounds.size.height == 480.0)
于 2012-12-07T23:58:43.550 に答える