我有一个基于导航的应用程序,我试图弹回到某个视图控制器,它工作正常,但我试图在我弹出的视图控制器中调用方法(帐户)。然而,当我推送到视图控制器时,该方法被调用,但是当我弹出它时没有调用。当我弹出到视图控制器时,我该怎么做才能调用该方法?
CurrentViewController.m
-(void)viewControllerPop{
ViewController *viewController = [[ViewController alloc]init];
[viewController account];
[self.navigationController popViewControllerAnimated:YES];
}
答案 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];
}