Закрытие ECSlidingViewController меню

Я бы хотел реализовать мое скользящее меню таким образом, чтобы при нажатии кнопки "Меню" мое меню отображалось, а при повторном нажатии "Меню" оно скрывалось. Но я не могу понять, как это сделать с ECSlidingViewController. Буду признателен за любую помощь.

3 ответа

Решение

ECSlidingViewController имеет методы для этого: anchorTopViewToRightAnimated:, anchorTopViewToLeftAnimated: а также resetTopViewAnimated:,

Пример в вашем контроллере вида сверху:

[self.slidingViewController anchorTopViewToRightAnimated:YES]

ECSlidingViewController предоставляет категорию для UIViewController, добавив это slidingViewController имущество.

Вы также можете использовать ECSlidingViewController's currentTopViewPosition чтобы определить, должна ли ваша кнопка показывать ваше меню или скрывать его в текущем контексте.

Я задал этот вопрос, и ответ выше помогает мне решить его. Но мне просто нужно добавить более подробный ответ с примером кода, чтобы другие могли получить выгоду от этого, если столкнулись с такой проблемой.

- (IBAction)showSlidingMenu:(id)sender {
   [self.slidingViewController anchorTopViewToRightAnimated:YES];
   if ([self.slidingViewController currentTopViewPosition] == ECSlidingViewControllerTopViewPositionAnchoredRight) {
      [self.slidingViewController resetTopViewAnimated:YES];
   }
}
  • Обратите внимание, что я анимирую контроллер вида сверху вправо, поэтому я проверяю, является ли позиция вида сверху ECSlidingViewControllerTopViewPositionAnchoredRight.
  • Точно так же позиция вида сверху имеет ECSlidingViewControllerTopViewPositionAnchoredLeft, если вы анимируете влево.
  • Если меню не показывает позицию вида сверху, получим ECSlidingViewControllerTopViewPositionCentered.

+1 за вопрос и принятый ответ

Благодарю.

В соответствии с "примером проекта ECSlidingViewController" вам необходимо поместить эти 4 строки в ViewWillAppear FirstTopController(например, TransitionViewController):

self.slidingViewController.topViewAnchoredGesture = ECSlidingViewControllerAnchoredGestureTapping | ECSlidingViewControllerAnchoredGesturePanning;
self.slidingViewController.customAnchoredGestures = @[];
[self.navigationController.view removeGestureRecognizer:self.dynamicTransitionPanGesture];
[self.navigationController.view addGestureRecognizer:self.slidingViewController.panGesture];

Эти 4 строки используются в методе делегата tableview. Возможно, вы не используете tableview, поэтому эти 4 строки не вызывают.

Удачи..

Другие вопросы по тегам