2015-09-05 2 views
3

В предыдущей версии SWRevealViewController я создавал сегмент SWRevealViewControllerSegue class, а в prepareforSegue я использовал следующий код.SWRevealViewController версия 2.4.0 segue не работает ios

#pragma mark - Navigation 
- (void) prepareForSegue: (UIStoryboardSegue *) segue sender: (id) sender 
{ 
    if ([segue isKindOfClass: [SWRevealViewControllerSegue class]]) 
    { 
     SWRevealViewControllerSegue *swSegue = (SWRevealViewControllerSegue*) segue; 
     swSegue.performBlock = ^(SWRevealViewControllerSegue* rvc_segue, UIViewController* svc, UIViewController* dvc) { 
      UINavigationController* navController = (UINavigationController*)self.revealViewController.frontViewController; 
      [navController setViewControllers: @[dvc] animated: NO ]; 

      [self.revealViewController setFrontViewPosition: FrontViewPositionLeft animated: YES]; 
     }; 

    } 
} 

В новой версии SWRevealViewController, не переход из SWRevealViewControllerSegue class.Instead есть класс называется SWRevealViewControllerSetSegue .Я создал SEGUE этого класса, но навигация не происходит.

Вышеупомянутый код не может использоваться в новой версии, поскольку он устарел. Что следует использовать в prepareforSegue?

Что я могу сделать для осуществления навигации? Помощь PLease.

+0

это дано в примере цели, но это не обязательно один для SWLRevalViewCOntroller –

+0

вам не нужно для этого просто создайте пользовательский сегмент и установите классы из SWRevealViewController. Существует два класса для использования 'SWRevealViewControllerSegueSetController' и' SWRevealViewControllerSeguePushController', и он работает. приветствует счастливое кодирование –

+0

Тогда в чем разница между контроллером установки и селектором pushcontroller? – abhi1992

ответ

-1

Субхаша Шарма является correct.We не кодировать ничего в prepareforSegue для навигации.

Просто создайте SEGUE типа SWRevealViewControllerSeguePushController и выполнить этот переход, когда needed.It просто работает.

+0

Моя проблема заключалась в том, что segue не работал в новой версии. Я создал segue класса SWRevealViewControllerSetSegue, но навигации не было. И я подумал, что в этом методе должен быть некоторый код метода prepareforsegue для этого сеанса. Но это была моя ошибка, что я использовал SWRevealViewControllerSetSegue вместо SWRevealViewControllerSeguePushController.it решил мой вопрос. – abhi1992

+0

Если вы знаете разницу между контроллером установки и pushcontroller, пожалуйста, объясните это здесь. – abhi1992

1

Попробуйте этот код ниже комментарий

UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; 
    SWRevealViewController *revealVC = (SWRevealViewController *)[storyBoard instantiateViewControllerWithIdentifier:@"revealVCID"]; 
    [self presentViewController:revealVC animated:YES completion:nil]; 
1

Вы можете использовать это один

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 

    if([segue isKindOfClass:[SWRevealViewControllerSegueSetController class] ]){ 

     UIViewController *dvc = [segue destinationViewController];     
     UINavigationController *navCtrl = (UINavigationController *) self.revealViewController.frontViewController;   
     [navCtrl setViewControllers:@[dvc] animated:NO];   
     [self.revealViewController setFrontViewPosition:FrontViewPositionLeft animated:YES]; 

} 
0

Это один работает для меня

UIStoryboard *sb; 

if (IS_IPAD) { 
    sb = [UIStoryboard storyboardWithName:@"iPad_Main" bundle:nil]; 
} else { 
    sb = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; 
} 


if ([segue isKindOfClass:[SWRevealViewControllerSegueSetController class]]) { 

    UINavigationController* navController = (UINavigationController*)self.revealViewController.frontViewController; 
    [navController setViewControllers: @[[sb instantiateViewControllerWithIdentifier:@"create"]] animated: NO ]; 
    [self.revealViewController setFrontViewPosition: FrontViewPositionLeft animated: YES]; 

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