5

だから私は最近、このかなりきれいなライブラリ、MMDrawerControllerに出くわしました。私はそれをインストールし、appDelegate.m の以下のコードで初期化しました。

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

UIViewController * leftSideDrawerViewController = [[LeftViewController alloc] init];

UIViewController * centerViewController = [[CenterViewController alloc] init];

UIViewController * rightSideDrawerViewController = [[RightViewController alloc] init];

UINavigationController * navigationController = [[UINavigationController alloc] initWithRootViewController:centerViewController];
[navigationController setRestorationIdentifier:@"MMExampleCenterNavigationControllerRestorationKey"];

self.drawerController = [[MMDrawerController alloc]
                         initWithCenterViewController:navigationController
                         leftDrawerViewController:leftSideDrawerViewController
                         rightDrawerViewController:rightSideDrawerViewController];
[self.drawerController setRestorationIdentifier:@"MMDrawer"];
[self.drawerController setMaximumRightDrawerWidth:200.0];
[self.drawerController setOpenDrawerGestureModeMask:MMOpenDrawerGestureModeAll];
[self.drawerController setCloseDrawerGestureModeMask:MMCloseDrawerGestureModeAll];

[self.drawerController
 setDrawerVisualStateBlock:^(MMDrawerController *drawerController, MMDrawerSide drawerSide, CGFloat percentVisible) {
     MMDrawerControllerDrawerVisualStateBlock block;
     block = [[MMExampleDrawerVisualStateManager sharedManager]
              drawerVisualStateBlockForDrawerSide:drawerSide];
     if(block){
         block(drawerController, drawerSide, percentVisible);
     }
 }];
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
[self.window setRootViewController:self.drawerController];


  return YES;
}

ただし、アプリをビルドすると、ストーリーボードのすべてが黒く覆われます (ストーリーボードの xml コードを「オーバーライド」する上記のコードが原因です)。このライブラリとストーリーボードを適切に統合するにはどうすればよいですか?

4

4 に答える 4

7

以下は、実行する必要があるものです:-

1) ストーリーボードに 3 つのビューを作成し、クラスとストーリーボード ID の両方をそれぞれに付与します。

2) Center View Controller を Navigation Controller に埋め込みます。つまり、Center ビューをクリックし、[Editor] => [Embed In] => [Navigation Controller] をクリックします。

3) 次の github リンクに移動します:-

https://github.com/mutualmobile/MMDrawerController をダウンロードし、そこから MMDrawerController Zip ファイルをダウンロードします。

4) プロジェクトを右クリックし、[ファイルを追加] を選択して、上記の github プロジェクトから次のファイルをプロジェクトに含めます。

  • MMExampleDrawerVisualStateManager.h
  • MMExampleDrawerVisualStateManager.m
  • MMDrawerBarButtonItem.h
  • MMDrawerBarButtonItem.m
  • MMDrawerController.h
  • MMDrawerController.m
  • MMDrawerController+Subclass.h
  • MMDrawerVisualState.h
  • MMDrawerVisualState.m
  • UIViewController+MMDrawerController.h
  • UIViewController+MMDrawerController.m

5) 最後に、AppDelegate.m ファイルに移動し、didFinishLaunchingWithOptions 関数内で次のコードを入力します。

Objective-C

UIStoryboard *storyboard;

storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UIViewController * leftSideNavController =
[storyboard instantiateViewControllerWithIdentifier:
 @"leftViewController"];

UIViewController * centerSideNavController =
[storyboard instantiateViewControllerWithIdentifier:
 @"ViewController"];

UIViewController * rightSideNavController =
[storyboard instantiateViewControllerWithIdentifier:
 @"rightViewController"];



self.drawerController =
[[MMDrawerController alloc]
 initWithCenterViewController:centerSideNavController
 leftDrawerViewController:leftSideNavController
 rightDrawerViewController:rightSideNavController];

[self.drawerController setOpenDrawerGestureModeMask:MMOpenDrawerGestureModeAll];
[self.drawerController setCloseDrawerGestureModeMask:MMCloseDrawerGestureModeAll];


[self.window setRootViewController:self.drawerController];
/* Optional - To define Drawer width */
[self.drawerController setMaximumRightDrawerWidth:280.0];

[self.drawerController setMaximumLeftDrawerWidth:280.0];

[self.window makeKeyAndVisible];

スイフト 2.2

let mainStoryBoard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let centerVC = mainStoryBoard.instantiateViewControllerWithIdentifier("Home") as! HomeVC

let leftVCs = mainStoryBoard.instantiateViewControllerWithIdentifier("Left") as! LeftVC

let rightVCs = mainStoryBoard.instantiateViewControllerWithIdentifier("Right") as! RightVC

let rightSideNav =  UINavigationController(rootViewController: rightVCs)
let leftSideNav =  UINavigationController(rootViewController: leftVCs)

let centerSideNav = UINavigationController(rootViewController: centerVC)

centerContainer = MMDrawerController(centerViewController: centerSideNav, leftDrawerViewController: leftSideNav, rightDrawerViewController: rightSideNav)

centerContainer!.openDrawerGestureModeMask = MMOpenDrawerGestureMode.PanningCenterView
centerContainer!.closeDrawerGestureModeMask = MMCloseDrawerGestureMode.PanningCenterView
                  centerContainer?.setDrawerVisualStateBlock(MMDrawerVisualState.swingingDoorVisualStateBlock())

window!.rootViewController = centerContainer
window!.makeKeyAndVisible()

注:var centerContainer: MMDrawerController? Swift バージョンの場合、グローバルに AppDelegate クラス内に追加します。

于 2015-08-27T10:50:58.950 に答える
3

ミートシャーの答えに加えて、センターコントローラーにナビゲーションバーがない場合は、コードの間に以下のコードを追加してください

UINavigationController * navigationController = [[UINavigationController alloc] 
    initWithRootViewController:centerSideNavController];
self.drawerController = [[MMDrawerController alloc]
     initWithCenterViewController:navigationController
     leftDrawerViewController:leftSideNavController
     rightDrawerViewController:rightSideNavController];

それが誰かを助けることを願っています。

于 2016-02-25T08:33:39.093 に答える
1

これを見てください、https://github.com/TomSwift/MMDrawerController-Storyboard

MMDrawerController絵コンテ付きのお守りみたいな作品のカテゴリです!

于 2014-07-24T10:26:09.437 に答える
1

このライブラリを使用するよりもストーリーボードにドロワーが必要な場合、私はすでに多くのプロジェクト Drawerで使用しています。

于 2014-05-08T04:58:18.753 に答える