分配代表的正确方法

时间:2012-02-17 09:24:03

标签: iphone objective-c ios

这是我的情况。

我有ViewControllerA,它能够通过presentModalViewController加载ViewControllerB。现在,ViewControllerB可以稍后推送ViewControllerC进入视图。 ViewControllerBViewControllerC都是同一个类。当我将ViewControllerA推入视图时,如何指定ViewControllerC作为委托?

目前,我正在将ViewControllerB指定为ViewControllerC的委托,然后调用ViewControllerA,我觉得这不是正确的。指挥链:ViewControllerC - > ViewControllerB - > ViewControllerA

感谢。

2 个答案:

答案 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留在内存中(模态视图控制器应该是自动的)。