- 締切済み
iPhone IBを使用しないでUITabBarControllerを
iPhone IBを使用しないでUITabBarControllerを実装 - (void)applicationDidFinishLaunching:(UIApplication *)application { window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; // UIViewControllerを継承したクラス page1Controller = [[Page1Controller alloc] initWithNibName:nil bundle:nil]; page2Controller = [[Page2Controller alloc] initWithNibName:nil bundle:nil]; // 質問1 tabBarController = [[UITabBarController alloc] initWithNibName:nil bundle:nil]; [tabBarController setViewControllers:[NSArray arrayWithObjects:page1Controller, page2Controller, nil] animated:NO]; // 質問2 [window addSubview:tabBarController.view]; tabBarController.selectedIndex = 1; } 上記プログラムなのですが、 質問1.UITabBarControllerのsetViewControllersメソッドを利用して、 UIViewControllerのインスタンスをセットしているのですが、 setViewControllersメソッドは、 UITabBarControllerのプロパティviewControllersに 値をセットするためのセッターなのでしょうか? 質問2.[window addSubview:tabBarController.view]のviewは、 UITabBarControllerが継承しているUIViewControllerの view(ゲッター)なのでしょうか? 上記の流れで、UITabBarControllerが、UIVeiwControllerを集約?しているので、 (@property(nonatomic, copy) NSArray *viewControllersとUITabBarControllerのヘルプに明記しているので) WindowのaddSubViewにセットするのは、UITabBarControllerのUIViewControllerのviewじゃないのかな? と初心者ながらの疑問です。 継承などの理解不足があると思いますが、ご教授の程お願いいたします
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- harawo
- ベストアンサー率58% (3742/6450)
Nibファイル(.xib)を使わずに、UIWinodwを生成する理由はなんでしょうか?そして、プログラムでUIWindowを生成することは、成功しているのでしょうか? Nibファイルで生成したUIWindowに、UITabBarをaddSubviewすれば、例示のコードのままで、お望みのことが実現するのではないかと思います。 ※質問1,2について、まずちゃんと動くコードを作ってから、お考えになっては、いかがですか?
補足
貴重なお時間、ご教授の程ありがとうございます。 Nibファイルを使わない理由ですが、IBの使い方の勉強ではなく、プログラムの勉強をしたいためです (Javaのswingの勉強の続きとして理解できればと思っております) プログラムでのUIWindow、UINavigationController、UIViewControllerの生成もできております。 質問1,2のプログラムで、起動は、確認しているのですが、 UIWindowのaddsubViewに渡す引数、 UITabBarController.viewが何なのか?が理解できていない状態ですので、 質問した次第です