2011-01-25 12 views
0

私はiPhoneを景色の中で遊んだことは一度もありませんが、私は完全に動作するiPhoneアプリを持っています。私は私のビューコントローラに次のコードを追加iPhoneを回転させてビューを変える

:私は携帯電話を回転させながら周りにプレイしたい、とそれを行うためには、私は非常にシンプルな何かをした

-(void)willRotateToInterfaceOrientation: (UIInterfaceOrientation)orientation duration:(NSTimeInterval)duration { 
    NSLog(@"WILL ROTATE TO INTERFACE ORIENTATION: %@",orientation); 

    if ((orientation == UIInterfaceOrientationLandscapeLeft) || (orientation == UIInterfaceOrientationLandscapeRight)) 
     tableView.frame = CGRectMake(0, 0, 480, 320); 
    else 
     tableView.frame = CGRectMake(0,73,320,390); 


} 

と私は思いBAD_ACCESSエラーが発生しました。ビューの負荷がまったく表示されません。では、問題は何ですか?willRotateメソッドを正しく実装することで、電話機が回転したときにすべてのコンポーネントのサイズを変更できます。

+0

これは多すぎるコードではありません。 EXC_BAD_ACCESSは、もはや存在しないオブジェクトにアクセスした結果のエラーです。あなたのコンソールには何がありますか?正確に起こるのはいつですか? – Icky

答えて

3

クラッシュこのラインによって引き起こされる:

NSLog(@"WILL ROTATE TO INTERFACE ORIENTATION: %@",orientation); 

orientationenum値であり、従って形式指定子は%iない%@であるべきです。

回転をサポートする最も簡単な方法は、実装することです:あなたがサポートしたいの向きについて

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 

戻りYES。この方法ではサイズ変更を行わないでください。ストラットとバネのビューを使用して、それらが交互に回転するようにサイズを変更し、正しく位置を変更するようにします。

+1

iOS 6以降、shouldAutorotateToInterfaceOrientation: 'は推奨されていません。 'shouldAutorotate'を使用してください:http://bit.ly/1iu7EOn – piperchester

0

それはあなたのロギングコードに問題があります:

NSLog(@"WILL ROTATE TO INTERFACE ORIENTATION: %@",orientation); 

あなたのロギング文字列の書式指定子%@NSStringポインタのプレースホルダです。アプリがこのポイントに達すると、オリエンテーション変数を参照して逆参照しようとしてNSStringインスタンスになり、ポインタではないので、それはenum値です。

+1

'%@ 'は' NSString'だけのプレースホルダーではありません。 'NSObject'や' CFTypeRef'でも動作します。 –

関連する問題