5

これはXcode3では非常に簡単でした。しかしXcode4では完全に失われました。*IBはまったく使用されていないようです。そして、すべてのTabBarControllerコードはコード内にあります。

質問:TabBarControllerテンプレートを使用するときにXcodeが生成するデフォルトコードにNavigationBarControllerを追加するにはどうすればよいですか?

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Override point for customization after application launch.

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

UIViewController *viewController1 = [[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil];

UIViewController *viewController2 = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];

self.tabBarController = [[UITabBarController alloc] init];

self.tabBarController.viewControllers = [NSArray arrayWithObjects:viewController1, viewController2, nil];

self.window.rootViewController = self.tabBarController;

[self.window makeKeyAndVisible];

return YES;

}
4

2 に答える 2

6

MainWindow.xibファイルを手動で追加して([New File]-> [Empty interface Builder document])、アプリのInfo.plistに「Mainnib file base name」というキーを追加して、その値を「MainWindow」に設定できます。

アプリデリゲートで、ウィンドウとUINavigationControllerをIBOutletsとして設定し、それらを生成するコードを削除します。次に、MainWindow.xibファイルに、アプリデリゲートのインスタンス、UINavigationController、およびWindowを追加します。UINavigationControllerとWindowをデリゲートのアウトレットに接続します。

于 2011-09-13T20:41:05.413 に答える
6

誰かが言及しているように、xibファイルを追加して、それを使用するようにアプリを構成することができます。このルートに行くことにした場合のコードバージョンは次のとおりです。どちらの方法でも知っておくのが常に最善です。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:    (NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

    UIViewController *viewController1 = [[FirstViewController alloc] init];
    UINavigationController *navigationController1 = [[UINavigationController alloc] initWithRootViewController:viewController1];
    [viewController1 release]; viewController1 = nil;

    UIViewController *viewController2 = [[SecondViewController alloc] init];
    UINavigationController *navigationController2 = [[UINavigationController alloc] initWithRootViewController:viewController2];
    [viewController2 release]; viewController2 = nil;

    self.tabBarController = [[UITabBarController alloc] init];

    NSArray *viewController = [[NSArray alloc] initWithObjects:navigationController1, navigationController2, nil];
    [navigationController1 release]; navigationController1 = nil;
    [navigationController2 release]; navigationController2 = nil;

    self.tabBarController.viewControllers = viewControllers;
    [viewControllers release]; viewControllers = nil;

    self.window.rootViewController = self.tabBarController;

    [self.window makeKeyAndVisible];

    return YES;
}

これはブラウザで書かれていますが、動作するはずです。

于 2011-09-13T20:55:07.347 に答える