移动到另一个视图控制器的正确方法

时间:2017-01-23 15:13:52

标签: ios objective-c uinavigationcontroller

我在Objective C中有一个使用this的幻灯片的项目。菜单上的每个页面底部都有3个按钮 Slidemenu

didSelectRowAtIndexPath的左侧菜单表中,我可以使用

“移动”到1,2和3视图控制器
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MyStoryboard" bundle:nil];
UIViewController *controller = [[UINavigationController alloc] initWithRootViewController:[storyboard instantiateViewControllerWithIdentifier:@"MyStoryboardViewController"]];
[self.revealViewController pushMainViewController:controller animated:YES];

在1,2和3视图控制器上,我用这个初始化导航项目上的汉堡包菜单

UIBarButtonItem *barButton = [[UIBarButtonItem alloc] init];
UIImage *imgBtn = [UIImage imageNamed:@"menu"];
[barButton setImage:imgBtn];

barButton.target = self.revealViewController;
barButton.action = @selector(revealLeftView);

self.revealViewController.toggleAnimationType = PBRevealToggleAnimationTypePushSideView;
self.navigationItem.leftBarButtonItem = barButton;

每个视图控制器都有自定义UIView,由3个按钮组成。它就像Spotify for iOS上的底部标签栏。它将导航到具有slidemenu按钮的A,B和C视图控制器。 Bottom button

现在,我可以通过在自定义视图上创建委托来导航到A,B和C. 需要目标UIViewController的实例作为参数,所以我可以使用

呈现该视图控制器
[self presentViewController:vc animated:YES completion:nil];

但结果是,A,B和C视图控制器无法使用1,2和3视图控制器等代码初始化其幻灯片。它创建了汉堡菜单,但它不能显示幻灯片菜单。

所以我在这里做错了?我认为我的错是如何呈现使用presentViewController的A,B和C视图控制器。还是另一个?任何消化都将不胜感激。非常感谢你!

1 个答案:

答案 0 :(得分:0)

<强>解决

而不是:

[self presentViewController:vc animated:YES completion:nil];

使用:

[self.revealViewController setMainViewController:vc animated:YES];

在这种情况下,所提供的vc控制器将保留一个revealViewController属性,因为它随之显示。

正如其开发人员所说here

非常感谢你!