弹出以查看控制器,如何调用我正在弹出的视图控制器中的方法?

时间:2013-12-13 01:39:15

标签: ios iphone objective-c uinavigationcontroller

我有一个基于导航的应用程序,我试图弹回到某个视图控制器,它工作正常,但我试图在我弹出的视图控制器中调用方法(帐户)。然而,当我推送到视图控制器时,该方法被调用,但是当我弹出它时没有调用。当我弹出到视图控制器时,我该怎么做才能调用该方法?

CurrentViewController.m

 -(void)viewControllerPop{
    ViewController *viewController = [[ViewController alloc]init];
    [viewController account];
    [self.navigationController popViewControllerAnimated:YES];
    }

1 个答案:

答案 0 :(得分:1)

三个答案:

1考虑不要这样做。你正在弹出的视图控制器应该     观察模型的变化(受推动的vc影响)并改变     它是viewWillAppear中的相应视图。

2使视图控制器弹出到推送的vc的委托,定义一个协议消息,告诉委托有关条件,以便它可以改变它的视图。

3最糟糕的答案,IMO,但您可以检查导航控制器的视图控制器堆栈并获取指向推动您的vc的指针。 (你发布的代码混淆了,分配一个新的vc,更改其中一个视图然后弹出一个推动你的那个没有任何好处。那个新的viewController你正在分配生命只是瞬间,并立即被丢弃。)

-(void)viewControllerPop {
    NSArray *viewControllers = [self.navigationController viewControllers];
    NSUInteger count = viewControllers.count;
    ViewController *vcUnderMe = viewControllers[count-1];  // this top one is at count-1

    // I disagree with this in principal, but here's what you're asking
    [vcUnderMe account];         // not sure what this method does... not named well
    vcUnderMe.accountLabel.hidden=NO;

    [self.navigationController popViewControllerAnimated:YES];
}