我有一个根视图控制器(RVC),可以打开一个Modal ViewController(MVC)。然后我通过推送在MVC中导航到更多的VC。从其中一个VC回到RVC的最佳做法是什么?
通常情况下,我有一个来自Modal VC的代表调用RVC然后解除模态,但是如果你离开它,但我不确定如果你离开它我会怎么做。
答案 0 :(得分:1)
没有看到任何代码,它有点难以帮助,但让我在黑暗中拍摄。
我将假设模态视图中提供的第一个控制器提供了调用解除操作的协议/委托。
如果你在模态视图中使用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];
}
答案 1 :(得分:1)
不要忘记委托不必是模型导航堆栈中UIViewController的属性。考虑创建一个单独的类,该类包含对rootviewcontroller的引用作为委托。这样你的应用程序中的任何类都可以访问它,并且你不会被迫不断地将它传递给需要它的每个UIViewController。