2015-09-05 82 views
3

在以前版本的SWRevealViewController中,我创建了一个SWRevealViewControllerSegue class的segue,并在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 help。

+0

这是在例如目的给出,但它并不需要一个SWLRevalViewCOntroller –

+0

你不需要它要做,只需创建一个自定义的Segue并从SWRevealViewController中设置类。有两个类可以使用'SWRevealViewControllerSegueSetController'和'SWRevealViewControllerSeguePushController',它可以工作。欢呼快乐编码 –

+0

那么set controller和pushcontroller segue有什么区别? – abhi1992

回答

-1

苏巴斯·夏尔马的评论这段代码correct.We不必在prepareforSegue导航任何代码。

只需创建一个SWRevealViewControllerSeguePushController类型的节点,然后在需要时执行该节点。它只是起作用。

+0

我的问题是segue没有在新版本中工作。我创建了一个SWRevealViewControllerSetSegue类的segue,但导航没有发生。而且我认为prepareforsegue方法中应该有一些代码用于此segue的工作。但是它是我的错误,我用SWRevealViewControllerSetSegue而不是SWRevealViewControllerSeguePushController.it解决了我的问题。 – abhi1992

+0

如果您知道设置控制器和按钮控制器的区别,请在此处说明。 – 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]; 

}