2016-11-23 6 views
0

Я новичок в iOS, и перед вами стоит проблема создания слайд-меню.
Я искал и нашел пример, но все для раскадровки и которые я нашел в xib, вызывается на AppDelegate класса.
Мне нужно создать меню выключения в xib, которое должно быть вызвано после входа в систему.
Спасибо заранее!Как создать меню слайдов после входа в систему с помощью XIB в объекте c

+0

попробовать этот учебник https: //www.raywenderlich .com/32054/how-to-create-a-slide-out-navigation-like-facebook-and-path – Vinodh

+0

Установить диспетчер меню slidesout в раскадровке как rootview и текущий loginview controllerif пользователь не зарегистрирован – Vinodh

+0

@Vinodh Любой другой пример, который прост в реализации. – Muju

ответ

1

Это ниже работает для меня хорошо ... попробуйте в своем коде. _parentView - это ваш пользовательский слайд-выход, а _rightView (UIButton) используется для отклонения этого пользовательского представления слайда. вы просто инициализируете эти два свойства

@property (strong,nonatomic) UIView *parentView; 
@property (strong,nonatomic) UIButton *rightView; 

    -(void)slideView 
    { 
     if(![_parentView isDescendantOfView:app.navController.view]) 
     { 
      [self showMenu]; 
     } 
     else 
     { 
      [self hideMenu]; 
     } 
    } 
    -(void)showMenu 
    { 
     int width=[[UIScreen mainScreen]bounds].size.width; 
     int height=[[UIScreen mainScreen]bounds].size.height; 

     _parentView =[[UIView alloc]initWithFrame:CGRectMake(0-(width-70), 0, width-70, self.navigationController.view.frame.size.height)]; 
     [_parentView setBackgroundColor:[UIColor lightTextColor]]; 

     [app.navController.view addSubview:_parentView]; 

     _rightView=[[UIButton alloc]initWithFrame:CGRectMake(0,80, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height-80)]; 
     _rightView.alpha=0.7; 
     [_rightView addTarget:self action:@selector(hideMenu) forControlEvents:UIControlEventTouchUpInside]; 

     if(_parentView.frame.origin.x <0) 
     { 
      [self performSelector:@selector(showSideMenu) withObject:nil afterDelay:0.2]; 
     } 


    } 
    -(void)showSideMenu{ 

     if(_parentView.frame.origin.x <0) 
     { 
      [UIView animateWithDuration:0.5 animations:^{ 
       [UIView animateWithDuration:0.7 animations:^{ 
        [self.view addSubview:_rightView]; 
        _rightView.backgroundColor=[UIColor blackColor]; 
       }]; 

       CGRect frame = _parentView.frame; 
       frame.origin.x =0; 
       _parentView.frame = frame; 

       CGRect rightFrame=self.view.frame; 
       rightFrame.origin.x=_parentView.frame.size.width; 
       self.view.frame=rightFrame; 

       CGRect fram1=app.navController.navigationBar.frame; 
       fram1 .origin.x =_parentView.frame.size.width; 
       app.navController.navigationBar.frame =fram1 ; 
      } completion:^(BOOL finished) { 
      }]; 
     } 
    } 

    -(void)hideMenu 
    { 
     if(_parentView.frame.origin.x == 0) 
     { 
      [UIView animateWithDuration:0.3 animations:^{ 
       CGRect frame = _parentView.frame; 
       frame.origin.x=-_parentView.frame.size.width; 
       _parentView.frame = frame; 

       CGRect fram=self.view.frame; 
       fram .origin.x=0; 
       self.view.frame =fram ; 

       CGRect fram1=app.navController.navigationBar.frame; 
       fram1 .origin.x =0; 
       app.navController.navigationBar.frame =fram1 ; 


      } completion:^(BOOL finished) { 
       [_rightView removeFromSuperview]; 
       [_parentView removeFromSuperview]; 
      }]; 
     } 
    } 

Спасибо ... !!!

+0

Что такое _parentView, _rightView слышать. – Muju

+1

Я обновляю вышеуказанный ответ, проверьте это. – Sommm

+0

Ваш код показывает черное окно. – Muju

2

САМЫЙ ЛУЧШИЙ ПРИМЕР МАРШРУТА МАРШРУТЫ: КОНТРОЛЛЕР ВЗАИМОДЕЙСТВИЯ. ЭТОТ БИБЛИОТЕКА ЛЕГКО ИСПОЛЬЗОВАТЬ И ЕЕ ЛЕГКО ПОНИМАТЬ.

+0

точно это лучше всего, но он находится в Раскадке и не после входа в систему. – Muju

+0

no Sir Вы также можете реализовать боковую панель после входа в систему. Предположим, у вас есть три контроллера, но вы хотите, чтобы sw от второго, так что вы можете сделать это очень легко. Сначала нажмите от одного до второго контроллера, а затем подключите sw к второму контроллеру, чтобы вы могли получить sw во втором контроллере. –

+0

Как это сделать. можете ли вы предоставить код этого? – Muju

1

PUSH ОТ НОРМАЛЬНОГО ЗРЕНИЯ УПРАВЛЕНИЯ ДЛЯ SW VIEW CONTROLLER

UIStoryboard*Storyboard=[AppDelegate storyBoardType]; 
SidebarViewController *sidebarmemu =(SidebarViewController*)[Storyboard instantiateViewControllerWithIdentifier:@"SidebarController"]; 

tbTBC*tabbarController=(tbTBC*)[Storyboard instantiateViewControllerWithIdentifier:@"tbTBCId"]; 


SWRevealViewController *revealController; 
UINavigationController *frontNavigationController; 
UINavigationController *rearNavigationController; 
frontNavigationController =[[UINavigationController alloc]initWithRootViewController:tabbarController]; 
rearNavigationController =[[UINavigationController alloc]initWithRootViewController:sidebarmemu]; 
revealController = [[SWRevealViewController alloc] initWithRearViewController:rearNavigationController frontViewController:frontNavigationController]; 
revealController.delegate = self; 
self.swcontroller =revealController; 
self.view.window.rootViewController =self.swcontroller; 

С помощью этого кода, который вы можете получить ОБА TAB бар, а также боковая панель

+0

@ DishantRajpat Я не хочу этого использовать Раскадровка. – Muju

 Смежные вопросы

  • Нет связанных вопросов^_^