AppDelegate で、UIViewController サブクラスを作成し、そのビューを追加したいと考えています。viw 自体はコードで指定されます - nib はありません。
アップルのドキュメントに基づいて、使用する必要があります
initWithNibName:nil bundle:nil];
次に、コントローラーのloadViewで、サブビューなどを追加します.
ただし、以下のテスト コードは機能しません。Apple のPageControl demoでAppDelegate コードをモデル化しました。これは、私のアプリが同様の構造を実装するためです (具体的には、ページ スクロール ビューを管理するための基本コントローラーと、ページを構築するための他のコントローラーの配列)。
しかし、ロギングにより initWithNibName:: と loadView の両方が起動することが証明されているため、AppDelegate コードが問題であると思われます。以下のアプリは動くのですが、画面が真っ白です。ラベル付きの緑のビューを期待しています。
AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
ScrollerController *controller = [[ScrollerController alloc] initWithNibName:nil bundle:nil];
[self.window addSubview:controller.view];
[self.window makeKeyAndVisible];
return YES;
}
ScrollerController (UIViewController サブクラス)
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)loadView{
CGRect applicationFrame = [[UIScreen mainScreen] applicationFrame];
UIView *contentView = [[UIView alloc] initWithFrame:applicationFrame];
contentView.backgroundColor = [UIColor greenColor];
self.view = contentView;
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(40, 40, 100, 40)];
[label setText:@"Label created in ScrollerController.loadView"];
[self.view addSubview:label];
}