画面の表示が切れる
AppDelegateオブジェクトでUIViewControllerのインスタンスを生成してaddSubViewすると画面表示が切れるという現象に悩まされてます。
@interface AppDelegate : NSObject { UIWindow *window; UIViewController *viewController; } @property (nonatomic, retain) IBOutlet UIWindow *window; @property (nonatomic, retain) UIViewController *viewController; @end @implementation AppDelegate @synthesize window; @synthesize viewController; - (void)applicationDidFinishLaunching:(UIApplication *)application { UIViewController *aViewController = [[UIViewController alloc] initWithNibName:@"HogeControllerView" bundle:[NSBundle mainBundle]]; self.viewController = aViewController; [aViewController release]; [window addSubview:[viewController view]]; [window makeKeyAndVisible]; } @end
よくサンプルで見かけるありふれたコードなんですがこれだと画面表示が切れてしまいます。
原因がまったくわからずInterface Builder(以下IBと略)のWindowとかViewとかをいろいろいじくりたおしても直りませんでした。
結局UIViewControllerの生成をIBで行うことでこの現象を回避しました。
修正方法
- コードを以下のように修正する
@interface AppDelegate : NSObject { UIWindow *window; UIViewController *viewController; } @property (nonatomic, retain) IBOutlet UIWindow *window; @property (nonatomic, retain) IBOutlet UIViewController *viewController; @end @implementation AppDelegate @synthesize window; @synthesize viewController; - (void)applicationDidFinishLaunching:(UIApplication *)application { [window addSubview:[viewController view]]; [window makeKeyAndVisible]; } @end
- MainWindow.xibを開く
- UIViewControllerを追加
- UIViewControllerオブジェクトを選択しnibファイルを指定する
- AppDelegateとUIViewControllerを接続する
回避できたものの原因がまったくわからないのでなんかしっくりきません。
2008/10/28追記
AutoResizeが怪しいと思っていろいろいじってみましたがダメでした。