将上一个视图控制器设置为当前视图控制器的属性

时间:2013-04-02 04:57:37

标签: iphone ios objective-c cocoa-touch

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

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

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

2 个答案:

答案 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];

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