这是场景,switchViewController 是添加到主窗口的视图。所以 switchViewController 是主视图,所以如果我想去视图 B,我会添加视图 B 的子视图,不需要删除 switchViewController 的视图对吗?问题是在我从视图 B 返回到 switchViewController 的视图后,不再调用 viewWillAppear 方法。
为什么会这样?
这是场景,switchViewController 是添加到主窗口的视图。所以 switchViewController 是主视图,所以如果我想去视图 B,我会添加视图 B 的子视图,不需要删除 switchViewController 的视图对吗?问题是在我从视图 B 返回到 switchViewController 的视图后,不再调用 viewWillAppear 方法。
为什么会这样?
viewWillAppear:
当视图从视图层次结构中删除或添加到视图层次结构时,不会自动调用。视图控制器有责任在正确的时间调用它。每当您呈现或推送新的视图控制器时,内置的视图控制器类都会执行此操作。由于您没有在应用程序中使用此机制,因此不会调用该方法(除非您自己调用它)。
That's because it never disappeared, you were just putting something else in front of it. If you want to navigate from one screen to another and back, they should be separate view controllers, and you should be using UINavigationController
and its pushViewController:isAnimated:
method.
它不会被调用,因为您只是修改了第一个视图,而不是导航到另一个视图。
您可能会考虑将您的视图嵌入到导航控制器中,然后调用您的 ViewB
[navigationController pushViewController:viewB animated:YES];