iPhoneで物理的なメニューボタン(Androidのような)メニューを作成するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/7304388

  •  25-10-2019
  •  | 
  •  

質問

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

Androidフォンのようなメニューのような物理的なメニューボタンを作成したいと考えています。

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

どうすればこれを達成できるかわかる人はいませんか。

UINavigationBarにドロワーのようなメニューを追加できますか?

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

役に立ちましたか?

解決

あなたがすべきことは、のサブクラスを作成することです UIViewController, 、例: MasterViewController. 。すべてのView Controllersサブクラスを持っています 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];

他のヒント

あなたが望むのは、ユーザーのタップを処理するためにUinavigationItemのタイトルビューを任意のuiviewに設定するだけだと思います。

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

もしそうなら、私はあなたが服用することを提案する sharedInstance Flagsがビューコントローラースタックの階層を追跡します。ユーザーがナビゲートするたびに、更新するだけです sharedInstance カスタムメニューの準備を行い、それを入力します。良い実践は、すべてのナビゲーション操作で新しくするのではなく、UIコンポーネントを再利用することです。

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

その非常にシンプルです。

1つのXibで、uは多くのビューを適切に追加できます。次に、データビューとダウンサイドボタンビューのような2つのメインビューを追加します。そして、あなたがそのデータビューに追加できる他のすべての見解のhirarchy。

シングルトンを作成する必要があると思います UIViewController また UIView このため。の利点 UIViewController で提示できるということです presentModalViewController:animated: 方法、そして必要に応じて、ナビゲーションスタックに押し込むことができます。また、あなたが持っているという利点もあります UIView 同時にインスタンス。
Singletonパターンを使用して、どこでもクラスに到達できます。

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

iOS 5 ベータ版を入手できる場合は、それを強くお勧めします。新しいベータ開発リリースには拡張機能があります UIViewController, 、Apple によってコンテナ ビュー コントローラと呼ばれています。セットアップは非常に簡単で、私はアプリでこれを使用しています。

コンテナビューコントローラは次のように動作します 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. の中に ContainerControllerさんの viewDidLoad メソッドでメニューを作成します。

    [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];
    

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top