确定segue是否为unwind segue?

5

我有大约6个Segue在prepareForSegue方法中执行相同的操作,但是我想跳过我的Unwind Segue的这个操作,但是我无法确定传递的segue是一个Unwind Segue还是其他类型的Segue。

任何帮助都将不胜感激。


1
既然您自己设置了segue,为什么不在prepareForSegue中使用if测试来跳过额外的方法调用呢? - Robotic Cat
我所知道的唯一方法是编写一个“if”语句,检查我想要执行代码的所有6个segue标识符。我宁愿只使用“if not unwind segue then blah”。据我所知,您无法将标识符设置为unwind segue,也没有其他方法来确定这一点? - Travis M.
2
如何在IB中设置unwind segue的标识符,然后在prepareForSegue:方法中检查 if (NO == [[segue identifier] isEqualToString:@"Unwind"]),以便代码仅对非unwind segues运行。 - Robotic Cat
你如何为解除跳转设置标识符? - Travis M.
3个回答

17

啊,没关系,机器猫已经给出了答案,就是给拆解回退(即 unwind segue) 添加一个标识符。一开始我不知道怎么做,直到意识到可以从Storyboard左侧的拉出面板中选择segue并在那里设置标识符。

谢谢!


你比我先完成了。很高兴你在属性检查器中找到了该字段。 - Robotic Cat
是的,我忘记了以前是怎么做的,直到看到这个答案 :-) - marsant

1

prepareForSegue只在前进方向上调用,当你执行返回操作时不会被调用。要处理返回操作,你需要将退出按钮连接到一个接收segue参数的IBAction方法中。这个方法将在你执行返回操作时被调用。

这个文章有更多关于如何使用它们的细节。


我刚测试了一下,Becca是对的。Unwind Segue会跳过prepareForSegue方法,所以在我上面的描述中,这算是一个不太重要的问题。谢谢。 - Travis M.
2
这仅适用于 segue.destinationViewController。来自文档的说明:“在取消和标准转场中,源场景都可以实现 prepareForSegue 以向目标发送信息。” - Andreas
在prepareForSegue中,你可以确认检查unwindSegue.identifier以获取unwind segues。 - Travis M.
1
你的评论似乎相互矛盾,@Travis。我的经验和苹果技术说明书中的《反向展开流程》表明,prepareForSegue:sender:实际上会被用于反向展开segue,因此这个答案似乎是不正确的。 - big_m

0

我自己对SWIFT还比较新,但我认为这里有一些误解。如果您自己添加了一个unwind segue,那么prepareForSegue会被触发。但是在点击导航栏中自动显示的“返回”按钮时,实际上不会触发prepareForSegue。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接