如何在iPhone上的堆栈弹出视图控制器后自动调用方法

joe*_*ull 10 iphone model-view-controller stack view uiview

我需要在导航堆栈中弹出子视图后更新iPhone上的父视图.当子项弹出堆栈并且父项再次可见时,如何设置要通知的父视图或接收自动方法调用?

用户在用户完成后在父页面上显示的子页面上输入数据并弹出视图.

谢谢你的帮助!

小智 13

我刚刚解决了这个同样的问题 - 上面的答案几乎是正确的,他们只是忘了设置委托.

我有一个根视图控制器,它显示列表的大小,调用可能改变列表大小的子视图控制器,并且必须在返回时更新大小.

当我创建我的父视图(下面的SettingsView),并将其添加为UINavigationController的根视图时,我确保在显示视图之前设置UINavigationController的委托 - 这是关键部分:

SettingsView *sv = [[SettingsView alloc] initWithNibName:@"SettingsView" bundle:nil];
UINavigationController *nc = [[UINavigationController alloc] initWithRootViewController:sv];
[nc setDelegate:sv];
Run Code Online (Sandbox Code Playgroud)

在父视图中,实现UINavigationControllerDelegate协议:

@interface SettingsView : UIViewController <UINavigationControllerDelegate>
Run Code Online (Sandbox Code Playgroud)

并提供willShowViewController方法:

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
    // Your code to update the parent view
}
Run Code Online (Sandbox Code Playgroud)

在关闭子视图之后,以及在重新显示父视图之前调用此方法.


Rob*_*Rob 6

我也需要做这样的事情.在拥有我的UINavigationControllerViewController中,我必须实现willShowViewController,如下所示:

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
}
Run Code Online (Sandbox Code Playgroud)

只要UINavigationController更改视图,就会调用该方法.如果我正确理解你的问题,我认为这应该做你想要的.