我有一个打开模态视图控制器(MVC)的根视图控制器(RVC)。然后,我通过推送在 MVC 中导航到更多 VC。从这些 VC 回到 RVC 的最佳实践是什么?
通常,我有一个来自 Modal VC 的代表,它调用 RVC,然后关闭模态,但是如果你离开它,但我不确定如果你离开它我会怎么做。
我有一个打开模态视图控制器(MVC)的根视图控制器(RVC)。然后,我通过推送在 MVC 中导航到更多 VC。从这些 VC 回到 RVC 的最佳实践是什么?
通常,我有一个来自 Modal VC 的代表,它调用 RVC,然后关闭模态,但是如果你离开它,但我不确定如果你离开它我会怎么做。
不要忘记委托不必是模型导航堆栈中 UIViewController 的属性。考虑创建一个将 rootviewcontroller 的引用作为委托的单例类。这样,您的应用程序中的任何类都可以访问它,并且您不必不断地将它传递给需要它的每个 UIViewController。
没有看到任何代码有点难以帮助,但让我在这里在黑暗中拍摄。
我将假设模态视图中显示的第一个控制器提供协议/委托来调用解除操作。
如果您在模态视图中使用 UINavigationController 将其他视图控制器推送到堆栈上,您总是可以像这样获得第一个控制器
UIViewController * yourFirstController = [[[self navigationController] viewControllers] objectAtIndex:0];
// and then use your delegate to call your dismiss method
// you will need to typecast your controller based on your subclass otherwise will get warning here
if ([[yourFirstController delegate] respondsToSelector:@selector(yourCloseProtocolMethod)]) {
[[yourFirstController delegate] yourCloseProtocolMethod];
}