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];
}
在以前版本的 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];
}