11

UINavigationControllerで実行されるアプリケーションがあります。次に、各画面の下部にUIToolbar要素を追加します。下部のツールバーは、現在表示されているViewController用にカスタマイズ可能である必要があります。私の最初のアイデアは、navigationControllerビューにツールバーを追加してタグを付けることでした。その後、viewControllerでUIToolbar要素を取得できると思いました。私は次のコードを持っています:

私のAppDelegateで:

// Get instance of Toolbar  (navController is an instance of UINavigationController and TOOLBAR_TAG a constant)
UIToolbar *toolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 440, 320, 40)];
toolbar.tag = TOOLBAR_TAG;
[navController.view addSubview:toolbar];

私のviewControllerでこれを試しました:

UIToolbar *toolbar = [self.navigationController.view viewWithTag:TOOLBAR_TAG];
toolbar.barStyle = UIBarStyleBlack;

しかし、これにより、私の場合のツールバーは「UILayoutContainerView」オブジェクトであり、UIToolbarオブジェクトではないというエラーが発生します。したがって、このアイデアは行き止まりのようです。

他の人はこの問題をどのように解決しましたか?

4

3 に答える 3

42

UINavigationControllerにはすでにツールバーがあります。使用するだけ

[self.navigationController setToolbarHidden:NO];

最上位のViewControllerで

[self setToolbarItems:items];

すべてのViewControllerで、アイテムはNSArrayそのViewControllerのツールバーアイテムの1つです。

編集:あなたのソリューションが機能していない理由についてTOOLBAR_TAGは、おそらくあなたはユニークではないので、別のサブビューを取得しています。しかし、私が言ったように、とにかく付属のツールバーを使用する必要があります。

于 2010-02-22T16:49:28.540 に答える
1

UINavigationControllerの下部ツールバーを簡単に表示するには、[NavigationController]オブジェクトを選択した状態でインスペクターからアクセスできる[ShowToolbar]チェックボックスをクリックします。これがお役に立てば幸いです:)

于 2011-07-24T17:57:27.793 に答える
0

デザインの観点から、スタック内の各ビューにツールバーが表示されることがわかっている場合を除いて、これはお勧めしません。スタック内のさまざまなビューのツールバーを非表示/表示し始めると、そのアニメーション(ツールバーがビューとともにスライドアウト/イン)が期待どおりにアニメーション化されないことがわかります。

特定のビューにツールバーが必要な場合は、それらをそれらのビューに配置します。ツールバーは、ナビゲーションスタック全体ではなく、ビューにコンテキストがあるためです。

于 2015-05-13T14:19:53.943 に答える