3

ビューのタブバーにプログラムでボタンを追加したい...

私はナビゲーションコントローラーを持っていますが、これらを追加することはできません..私のビューでプログラムで作成したい...

4

2 に答える 2

13

タブバーコントローラーは、アプリケーションを2つ以上の異なる操作モードに分割するために使用するコンテナービューコントローラーであるため、ほとんどのアプリには、タブバーコントローラーの子としてナビゲーションコントローラーがあります。

Appleの立場は次のとおりです。

アプリケーションがさまざまなタイプのデータを表示する場合、または同じデータを大幅に異なる方法で表示する場合は、タブバーコントローラーを使用します。

それはあなたが別のことをすることができないということではありません...あなたが持っている主な質問はあなたがすでにアプリにナビゲーションコントローラーを配置していて、プログラムでタブバーコントローラーを作成したいということです。したがって、これを確認できる唯一の方法は、NavController内で画面を変更するたびにタブバーコントローラーが変更されてもかまわないということです。一部のアプリはこのように機能します。ほとんどはしません。

上記の私の仮定が正しい場合は、コードを再考して、この開発ラインを追求したいかどうかを確認することをお勧めします。その場合、タブバーコントローラを簡単に作成して、現在のビュー内にアタッチできます。

これが私のアプリの1つのセットアップを作成するために使用するコードです:

// set up a local nav controller which we will reuse for each view controller
UINavigationController *localNavigationController;

// create tab bar controller and array to hold the view controllers
UITabBarController *tabBarController = [[UITabBarController alloc] init];

NSMutableArray *localControllersArray = [[NSMutableArray alloc] initWithCapacity:1];

// setup the first view controller (Root view controller)
RootViewController *myViewController;
myViewController = [[RootViewController alloc] initWithTabBar];

// create the nav controller and add the root view controller as its first view
localNavigationController = [[UINavigationController alloc] initWithRootViewController:myViewController];
localNavigationController.navigationBar.barStyle = UIBarStyleBlack;
localNavigationController.delegate = self;

[localControllersArray addObject:localNavigationController];

// release since we are done with this for now
[localNavigationController release];
[myViewController release];

tabBarController.viewControllers = localControllersArray;
tabBarController.moreNavigationController.navigationBar.barStyle = UIBarStyleBlack;  

tabBarController.delegate = self;
tabBarController.moreNavigationController.delegate = self;

// release the array because the tab bar controller now has it
[localControllersArray release];

self.tabBarController.selectedIndex = 0;

// add the tabBarController as a subview in the window
[window addSubview:tabBarController.view];

// need this last line to display the window (and tab bar controller)
[window makeKeyAndVisible];

プログラムですべてを行う方が簡単だと感じる状況はたくさんあります。

お役に立てれば。

于 2010-07-10T23:19:58.407 に答える
0

タブバーコントローラーへの参照を保持する必要があります。たとえば、AppDelegateに保持することができます...

于 2010-07-10T22:59:02.810 に答える