2015-09-05 81 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]; 

}