0

我有 3 个Scenes通过Segue.

SceneA> SceneB>SceneC

SceneA来电SceneBSceneB来电SceneC。不经过你就无法到达SceneCfrom 。 SceneASceneB

我想SceneA成为一个delegatefor SceneC

我想我必须设置SceneASceneB代表,并设置SceneBSceneC Delegate.

我真的不需要SceneB成为SceneC的代表。有没有办法可以直接设置SceneASceneC's delegate?

4

4 回答 4

2

您需要通过SceneB设置的声音来完成,但SceneA不需要delegateSceneB. 您可以将信息传递给SceneB它不会直接使用的信息,除了在SceneC触发 segue 时传递给它。只需SceneB适当地命名该属性,这样它的用途就很明显了。

于 2013-09-26T19:59:37.053 回答
2

您可以在 B 中引用 A,当您在 B 中创建 C 时,将其委托设置为 A。像这样。在A中创建B时设置属性值即b.aObj = self;。在 B 中,您正在创建 C set c.delegate = aObj;

于 2013-09-26T20:01:04.963 回答
1

我同意 Wain,但另一种方法是发布正在监听的SceneC通知。SceneA这会导致断开连接的行为,这并不总是理想的,但在不知道您的意图的情况下需要考虑。

于 2013-09-26T20:01:25.413 回答
1

考虑使用 -[NSNotificationCenter addObserver:selector:name:object:]和 - [NSNotificationCenter postNotificationName:]
如果您不希望您的委托返回一个值,那么这是最好的决定。如果您希望您的代表返回一个值,请按照@Wain 的建议进行操作。

于 2013-09-26T20:03:04.073 回答