1

AwakeFromNib メソッドで iphone の向きを確認したい。これは私のコードです:

- (void)awakeFromNib
{
    orientation = [[UIApplication sharedApplication]statusBarOrientation];

    if (orientation == UIInterfaceOrientationPortrait)
    {
        NSLog(@"orientation portrait");
    }    
    else if (orientation == (UIInterfaceOrientationLandscapeLeft | UIInterfaceOrientationLandscapeRight))
    {
        NSLog(@"Orientation landscape");
    }
}

iPhone を回転させているときにログにメッセージが表示されません。何が問題なのですか?

4

1 に答える 1

0

Michael Dautermann の (現在は削除された) 回答に対するあなたのコメントは矛盾しています。あなたはプログラムでビューを作成していると言いましたが、「ビューがロードされるとき」についても話しました。

コードでビューを作成しているかペン先/ストーリーボードからロードしています。同じビュー インスタンスで両方を行うことはできません。

メソッドが呼び出されていないという事実awakeFromNibは、ビューをプログラムで作成しているという主張と一致します。しかし、もう 1 つの可能性は、nib からビューをロードしているが、nib でビューの「カスタム クラス」を正しく設定していないため、実際にはビュー サブクラスのインスタンスを作成していないことです。

本当にプログラムでビューを作成している場合は、次のようなコードが必要です。

view = [[MyView alloc] initWithFrame:someRect];

または多分これ:

view = [[MyView alloc] init];

2 番目のケースは、隠れて、単に を呼び出します[self initWithFrame:CGRectZero]。いずれにしても、ビューのinitWithFrame:メソッドが呼び出されます。したがって、そのメソッドをオーバーライドして、そこでインターフェイスの向きを確認する必要があります。

これらの方法のいずれかでビューを作成していない場合は、質問を編集して、作成方法を正確に説明してください

于 2013-06-26T07:21:32.953 に答える