1

パス メニューのようなものを実装する必要があります。これは、ユーザーがどの画面にいても、アプリ内でグローバルに利用できます。

ここに画像の説明を入力

アニメーション/スタイリングの実装方法を尋ねているわけではないことに注意してください。メニュークロスビューコントローラーをレイアウトする適切な方法に興味があるだけです。

私が現在取っているアプローチは次のとおりです。

  1. コンテナー ビュー コントローラーを作成し、アプリの rootViewController として作成します。
  2. 機能ビュー コントローラーを子コントローラーとしてルート コントローラーに追加します。
  3. グローバル メニューをビューとして作成し、サブビューとしてルート ビュー コントローラーのビューに挿入し、他のサブビューの上に表示する
  4. ユーザーがグローバル メニューでメニュー項目を選択すると、対応する機能ビュー コントローラーのビューを前面に移動する必要がありますが、それでもグローバル メニュー ビューの下に移動します。

このアプローチの欠点は次のとおりです。

  1. モーダル ビュー コントローラーを提示すると、グローバル メニューがブロックされます
  2. 機能するすべてのView Controllerを事前にロードする必要がある

要するに、私は UI/UX の期待を達成することができましたが、技術的には間違っていると感じています。似たようなプロジェクトの経験をお持ちの方がいらっしゃいましたら、ご意見をお聞かせください。

4

3 に答える 3

4

2つの解決策があり、

  1. グローバル メニューを AppDelegate に追加できます。

    • (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOption

次に、次のように、グローバル メニューをナビゲーション コントローラー ビューに追加できます。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

    // Override point for customization after application launch.
    self.window.backgroundColor = [UIColor whiteColor];

    self.viewController = [[HomeViewController alloc] initWithNibName:nil bundle:nil];
    self.navigationController = [[UINavigationController alloc] initWithRootViewController:self.viewController];

    self.navigationController.delegate = self.viewController;
    self.window.rootViewController = self.navigationController;

    // Your Global Menu
    UIButton *myButton ...
    [self.navigationController.view addSubview:myButton];  

    [self.window makeKeyAndVisible];
    return YES;

}
  1. BaseViewController を作成し、グローバル ボタンを BaseViewController に追加できます。次に、他のすべてのビューコントローラーが BaseViewController を継承します。したがって、一部のView Controllerにはグローバルメニューがあります。一部のビュー コントローラーがグローバル メニューを必要としない場合は、通常の UIViewController を継承します。

そのような、

#import "GlobalMenuView.h"

@interface BaseViewController : UIViewController
{
    UIButton *btnMenu;
    GlobalMenuView *globalMenu;
}

@end  

次に、グローバルメニューが必要なView Controllerは、

#import "BaseViewController.h"

@interface YourOtherViewController: BaseViewController
{

}

@end
于 2013-06-20T06:46:17.510 に答える
1

メインの UIViewController が既に追加されていることを確認した後、おそらく UIWindow に直接追加できますか?

于 2013-06-20T00:24:01.647 に答える
0

私はおそらく今は何の助けにもなりませんが、あなたが達成したいことに対するより良い解決策もあります. あなたができることは、UIViewオブジェクトをサブクラス化し、アプリデリゲートクラスで、

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

メソッド、次のコードを挿入できます

[self.window insertSubview:(UIView) aboveSubview:(UIView)];

そして、それはあなたが達成したいことをあなたに与えるはずです:)

それが助けになることを願っています

于 2013-12-20T00:46:29.347 に答える