所以,我正试图实现向右滑动以返回上一个视图控制器功能。
但是当我在当前视图控制器中有以下代码时,我得到一个黑屏
- (void)initPreviousViewController:(GGMainViewController *)previous
{
self.previousViewController = previous;
self.previousViewController.view.frame = self.currentView.bounds; //self.currentView is declared elsewhere (in the init of the current view controller)
[self addChildViewController:self.previousViewController];
[self.currentView addSubview:self.previousViewController.view];
[self.previousViewController didMoveToParentViewController:self];
{
^我在初始化当前视图控制器之后,在推送当前视图控制器之前,在前一个视图控制器中调用此方法
如果我将 self.previousViewController = previous;
更改为 self.previousViewController = [GGMainViewController alloc] init];
,则可以。但是,我不想重新初始化以前的控制器。
那么如何将以前的视图控制器设置为当前视图控制器的属性。
哦,我也是iOS的第一个计时器,所以如果这不是推荐的,请告诉我。
我的想法背后的基本原理:
通常用户只需单击一个按钮,UINavigationController即可实现,但由于我使用的是滑动功能,我认为用户需要在当前视图控制器后面看到前一个视图控制器,因为它们会滑动屏幕
根据要求 我如何从previousViewController调用currentViewController
- (void)displayCurrentViewController:(id)sender
{
GGNextViewController *next = [[GGNextViewController alloc] init];
[next initializeExploreViewController:self]; // If I comment this out, everything is ok (screen is not black,etc. apart from being able to swipe backwards
[self.navigationController pushViewController:next animated:YES];
}
答案 0 :(得分:1)
您使用self.navigationController
推送当前视图控制器,因此您可以在触发正确的滑动手势时调用方法。
在当前视图控制器中尝试此代码( GGNextViewController.m )...
<强> 1。将rightSwipeGestureAction()选择器添加到您拥有的手势识别器。
<强> 2 强>
-(void)rightSwipeGestureAction
{
[self.navigationController popViewControllerAnimated:YES];
}
答案 1 :(得分:0)
事实证明,以下几行导致了问题。我只是决定将它们评论出来,然后它没有黑屏。
[self addChildViewController:self.previousViewController];
[self.previousViewController didMoveToParentViewController:self];
我不能只使用导航控制器弹出它,因为我想创建一些拖动效果,用户滑动(因为他们看到下面的前一个视图控制器)直到屏幕中间,从那里去以前的视图控制器。