iOS:委派设置

时间:2013-09-26 19:48:53

标签: ios objective-c delegates

我通过Scenes连接了3 Segue

SceneA> SceneB> SceneC

SceneA来电SceneBSceneB来电SceneC。如果不经过SceneC,您就无法从SceneA转到SceneB

我希望SceneA成为delegate的{​​{1}}。

我想我必须将SceneC设为SceneA代表,并将SceneB设置为SceneB

我真的不需要SceneC Delegate成为SceneB的代表。有没有办法直接将SceneC设置为SceneA的委托?

4 个答案:

答案 0 :(得分:2)

您需要通过设置的声音检查SceneB,但SceneA不一定是delegate的{​​{1}}。您可以将信息传递给SceneB,除了在触发segue时传递给SceneB之外,它不会直接使用。只需在SceneC上对该属性进行适当的命名即可,因此显而易见的是它的用途。

答案 1 :(得分:2)

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

答案 2 :(得分:1)

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

答案 3 :(得分:1)

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