这是我的情况。
我有ViewControllerA
,它能够通过presentModalViewController加载ViewControllerB
。现在,ViewControllerB
可以稍后推送ViewControllerC
进入视图。 ViewControllerB
和ViewControllerC
都是同一个类。当我将ViewControllerA
推入视图时,如何指定ViewControllerC
作为委托?
目前,我正在将ViewControllerB
指定为ViewControllerC
的委托,然后调用ViewControllerA
,我觉得这不是正确的。指挥链:ViewControllerC
- > ViewControllerB
- > ViewControllerA
感谢。
答案 0 :(得分:1)
我觉得设计有点笨拙。而不是将委托传递回链中,为什么不将ViewControllerB和ViewControllerC的委托分配给viewControllerA(因为它们是同一个类)。除非C需要与B通信,否则您不必传递链。
在呈现ViewControllerB之前:
b.delegate = self
[self presentModalViewController:b animated:YES];
在推送ViewControllerC 之前,在ViewControllerB中
c.delegate = self.delgate
[self.navigationController pushViewController:c animated:YES]
以这种方式B-> A和C-> A
答案 1 :(得分:0)
您的设计(C-> B-> A)并不是那么糟糕,因为它遵循UI流程的逻辑。 (你不是直接从C跳到A.)不过,如果你愿意的话,你也可以指定A作为代表。只需确保A留在内存中(模态视图控制器应该是自动的)。