1

iPhoneでナビゲーションベースのアプリケーションを開発しています。

Androidフォンのようなメニューのような物理メニューボタンを作成したい。

このメニューには、階層内のどのビューからでもアクセスできます。

どうすればこれを達成できるか考えている人はいますか。

メニューのような引き出しを UINavigationBar に追加できますか?

tabbarcontroller は最後のオプションであるため、提案しないでください。

4

7 に答える 7

1

その場合は、sharedInstanceViewControllerスタックの階層を追跡するフラグを使用することをお勧めします。ユーザーがナビゲートするたびに、を更新sharedInstanceし、カスタムメニューの準備を行ってデータを入力します。すべてのナビゲーション操作でUIコンポーネントを新しくするのではなく、UIコンポーネントを再利用することをお勧めします。

于 2011-09-09T06:57:02.040 に答える
1

ユーザーのタップを処理するために、 UINavigationItem の titleView を任意の UIView に設定するだけだと思います。

これはテキスト ラベルである必要はありません :)

于 2011-09-08T14:29:58.263 に答える
1

あなたがすべきことはUIViewController、例えばのサブクラスを作成することですMasterViewController。すべてのビュー コントローラーをサブクラス化しMasterViewControllerます。では、MasterViewControllerドロワー ビューを作成して表示するコードを記述できます。その後、すべてのビュー コントローラーがそのコードを継承し、いつでもそれを呼び出すことができます。

ビューをスライドするには:

drawerView.frame = CGRectMake(0, -1*drawerView.frame.size.height, self.view.frame.size.width, whateverHeight);
[UIView beginAnimations:nil context:NULL];
drawerView.frame = CGRectMake(0, 0, self.view.frame.size.width, whateverHeight);
[UIView commitAnimations];

于 2011-09-13T18:52:09.200 に答える
0

iOS 5ベータ版を入手できる場合は、それを強くお勧めします。新しいベータ開発リリースには、UIViewControllerAppleによってコンテナビューコントローラとして吹き替えられた拡張機能があります。セットアップはとても簡単で、アプリで使用しています。

コンテナビューコントローラは、子ビューだけでなく、子ビューコントローラを追加できるという点で同じようUINavigationControllersに機能します。私が言ったように、それらはセットアップが簡単です。方法を説明します:UITabBarControllers

  1. という名前の新しいクラスを作成しますContainerController。と呼ばれる初期化メソッドを追加します- (id)initWithNavigationController:(UINavigationController *)controller。実装は次のようになります。

    if ((self = [super init])) {
      [self addChildViewController:controller];
      controller.view.frame = CGRectMake(0, 0, 320, 420); // Leave room for the menu at bottom of the screen
      [self.view addSubview:controller.view];
    }
    

    ナビゲーションコントローラーを追加する理由は、このコンテナーコントローラーが遷移を実行しないようにするためです。これはより複雑です。

  2. のメソッドで、メニューを作成しますContainerControllerviewDidLoad

    [super viewDidLoad];
    
    UIView *menuWrapperView = [[[UIView alloc] init] autorelease];
    menuWrapperView.frame = CGRectMake(0, 420, 320, 40); // Place a wrapper for the menu buttons directly below the navigation controller
    
    UIButton *button1 = ...;
    UIButton *button2 = ...;
    
    [menuWrapperView addSubview:button1];
    [menuWrapperView addSubview:button2];
    
    [self.view addSubview:menuWrapperView];
    

このアプローチ(子ビューコントローラーを使用)を使用すると、ビューとナビゲーションコントローラーは、必要なメモリ警告、ビ​​ューの読み込み、および必要に応じて回転処理メソッドの呼び出しを受け取ります。

于 2011-09-15T12:08:15.480 に答える
0

その非常に単純な..

1 つの XIB で、多くのビューを正しく追加できます。ここで、たとえばデータ ビューとダウン サイド ボタン ビューのような 2 つのメイン ビューを追加します (ナビゲートするボタンが 4 つある場合)。そして、そのデータビューに追加できる他のすべてのビューの階層。

于 2011-09-15T09:12:38.233 に答える
0

" " クラスを作成し、DrawerViewそれを使用する場所にインポートできます。その後presentModalViewController: myDrawer、必要なときにそれを表示するために使用できます。それが理にかなっていることを願っています。

于 2011-09-05T06:52:54.483 に答える
0

UIViewControllerこのためにシングルトンを作成する必要があると思いますUIView。の利点はUIViewController、メソッドで表示できることと、presentModalViewController:animated:必要に応じてナビゲーション スタックにプッシュできることです。UIView同時にインスタンスがあるという利点もあります。
シングルトン パターンを使用すると、どこからでもクラスにアクセスできます。

Objective-C のシングルトンに関する公式ドキュメントからこのリンクを確認してください:シングルトン インスタンスの作成
または、Matt Gallagher のマクロを使用できます (これは非常に使いやすいため):シングルトン マクロ

于 2011-09-15T09:51:29.227 に答える