2011-09-13 6 views
1

私は、アプリケーション全体を通してカスタムメニューを持つ必要があるアプリを計画しました。ツールバーやそのようなものではないので、私は定期的なUINavigationControllerやUITabBarControllerがその仕事をするとは思わない。iOSカスタムメニュー(ナビゲーションコントローラ?)

すべてのビューに表示されるこのカスタムメニューを作成するには、どのような方法が最適でしょうか?カスタムメニューを使ってビューを作成して各ビューに割り当てることを考えましたが、ちょっと残酷なようです。 UINavigationControllerを拡張することもできますが、わかりません。

あなたの意見を聞いて欲しいです。

ありがとうございました! :)
Shai。

+2

私は2つのオプションを考えることができます:1.サブクラスUINavigationController標準UINavigationBarのビューを隠し、独自のビューを作成し、それの上にそれを置く(醜いと誰が結果は以下のようになってしまいます知っています)。 2. UIWindowのサブビューとしてメニューを追加し、アプリ全体のすべての上にとどまるようにします。 –

+0

UIWindowでビューをプッシュすることは良いアイデアかもしれません。ありがとう:) –

+0

私は答えとして投稿します:) –

答えて

0

私は2つのオプションを考えることができます:1.サブクラスUINavigationController標準UINavigationBarのビューを隠し、独自に作成それを見て、その上に置いてください(醜い人、結果がどのようなものになるかは分かります)。 2. UIWindowのサブビューとしてメニューを追加し、アプリ全体のすべての上にとどまるようにします。

+0

を隠しナビゲーションコントローラを使用して、iOS 5.0以降、コンテナビューコントローラがおそらくもっと良い方法です。 http://www.objc.io/issue-1/containment-view-controller.htmlは簡単な例を示しています。 –

0

私は、カスタムツールバーを作成してアプリ全体で使用することをお勧めします。 Subclassing UINavBarは別のオプションですが、Appleには推奨されていませんので、私はそこに行かないでしょう。

+0

カスタムメニューの場所は、一番下のコーナーにあり、奇妙なカスタムシェイプで、ツールバーのシェイプではないので、この特定の状況ではうまくいかないと思います... –

+0

このカスタムあなたが欲しいと思った時には、あなたが望むくらいの形で遊ぶことができます。 – TommyG

+0

これは、アプリケーション全体で使用されるカスタムUIViewControllerを持つこととはどう違うのでしょうか?同じことは多かれ少なかれ、いいえ? –

0

私はADEに同意するようにWEPopover

+0

まあ、私はこれが私が探しているものだとは思わない...それは私の問題を解決しないよりもビュー全体に永続的でない場合。私は@Javier Sotoのソリューションを最初に試してみたいと思う。 –

1

としてポップオーバースタイルのメニューを使用してに見えると思います。私は、共有クラスに追加されたポップオーバーコントローラは、iOSスタイルに最も適していると考えています(AppDelegateをどこからでも参照できるようにし、複数のインスタンスを作成せず、あなたがメニューを見たい時はいつでも、彼らはビューと内蔵のメモリ管理を持っているので、UINavigationControllerとUITabBarControllerはかなりいつも行くための最善の方法です)

+0

カスタムビューをサブビューとして追加するのとどう違うの?私はまだ新しい画面の各viewDidLoadでそれを実行する必要がありますか? –

+0

nope。 AppDelegateのapplicationDidFinishLaunchingメソッドで初期化し、appDelegateクラスのプロパティとして保持しておくとしましょう。あなたがどこからでもそれを表示する必要があるときは、あなたのクラスから[[[[UIApplication sharedApplication] delegate] .YourPopoverController presentPopoverFromRect:inView:permittedArrowDirections:animated:]のような呼び出しを行うだけです。これは、表示するクラスの各ViewDidLoadメソッドでビューを再作成する代わりに、その1つの一意のオブジェクト(インスタンス)を使用します。 – Vlad

+0

さらに、popoverの処理は、カスタム作成のビュー(ウィンドウ外をクリックすると自動的に閉じたり、デリゲートなどがある)がより簡単になることが証明されます – Vlad

2

を隠してここにあなたが何ができるかです:。

  1. 作成タブバーを非表示にするUITabBarControllerのサブクラスです。このページの最後の投稿を参照してください:http://www.iphonedevsdk.com/forum/iphone-sdk-development/4091-uitabbarcontroller-hidden-uitabbar.htmlシングルトンオブジェクトでこのUITabBarControllerにアクセスできるようにします。
  2. メニューのビューと、メニューボタンに対応するいくつかのIBActionを作成します。
  3. メニューボタンを押すと、以下のように、手動でuitabbarcontrollerのタブを切り替えることができます。tabBarController.selectedIndex = x;
+0

このサウンドも同様に良いアイデアでもあります。 UIWindow上で動作し、私のニーズにもうまく機能するので、私はそれに固執して、ナビゲーションコントロール –

関連する問題