0

因此,我正在尝试实现向右滑动以返回上一个视图控制器功能。

但是当我在当前视图控制器中有以下代码时,我得到一个黑屏

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

2 回答 2

1

您使用self.navigationController用于推送当前视图控制器,因此您可以在触发正确的滑动手势时调用一个方法。

在您的当前视图控制器(GGNextViewController.m)中尝试此代码...

1. 将 rightSwipeGestureAction() 选择器添加到您拥有的手势识别器中。

2.

-(void)rightSwipeGestureAction
{
    [self.navigationController popViewControllerAnimated:YES];
}
于 2013-04-02T05:26:41.317 回答
0

事实证明,以下几行导致了问题。我只是决定将它们注释掉,然后它就起作用了,没有黑屏。

[self addChildViewController:self.previousViewController];
[self.previousViewController didMoveToParentViewController:self];

我不能只用导航控制器弹出它,因为我想创建一些拖动效果,用户滑动(因为他们看到下面的前一个视图控制器)直到屏幕的一半,从那里转到前一个视图控制器。

于 2013-04-02T05:58:56.863 回答