SWRevealViewController 版本 2.4.0 segue 不工作 ios

SWRevealViewController version 2.4.0 segue not working ios

在以前版本的 SWRevealViewController 中,我创建了 SWRevealViewControllerSegue class 的 segue,在 prepareforSegue 中,我使用了以下代码。

#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];
        };

    }
}

In the new version of SWRevealViewController,there is no segue of SWRevealViewControllerSegue class.Instead there is a class called SWRevealViewControllerSetSegue .I created a segue of this class but the navigation is not happening.

上面的代码不能在新版本中使用,因为它是 deprecated.What 我应该在 prepareforSegue 中使用吗?

我该怎么做才能执行导航?请帮忙。

试试下面的代码

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

Subhash Sharma 的评论是 correct.We 不必在 prepareforSegue 中编写任何代码进行导航。

Just create a segue of type SWRevealViewControllerSeguePushController and perform this segue whenever needed.It simply works.

你可以用这个

- (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];

}

这个适合我

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];

}