我通过Scenes
连接了3 Segue
。
SceneA
> SceneB
> SceneC
SceneA
来电SceneB
,SceneB
来电SceneC
。如果不经过SceneC
,您就无法从SceneA
转到SceneB
。
我希望SceneA
成为delegate
的{{1}}。
我想我必须将SceneC
设为SceneA
代表,并将SceneB
设置为SceneB
。
我真的不需要SceneC Delegate
成为SceneB
的代表。有没有办法直接将SceneC
设置为SceneA
的委托?
答案 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建议。