不同的 Unwind Segue 取决于来源

Posted

技术标签:

【中文标题】不同的 Unwind Segue 取决于来源【英文标题】:Different Unwind Segue depending on source 【发布时间】:2015-12-10 06:16:57 【问题描述】:

我在 UINavigationController 和一个“详细信息”UIViewController 中嵌入了一个“大师”UITableViewController

在主导航栏上,我有一个“添加”按钮,它与导航栏上有一个保存和取消按钮的详细视图相连接。

表格单元格也转到相同的详细信息视图,并在prepareForSegue 方法中传递数据。

详细视图中保存按钮的展开转场方法需要:

    如果添加按钮用于显示详细信息视图,则向主表添加新行或 如果所选行用于显示详细信息视图,请修改该行的数据

我想不通的是如何区分 unwind 方法中的两个来源...

也许我的方法不对,但我们将不胜感激!

【问题讨论】:

【参考方案1】:

您可以向“Detail”视图控制器添加一个“source”参数,并在您对其进行 segue 时为其指定一个值。这可以在 prepareForSegue 方法中完成:

DetailViewController* destinationController = (DetailViewController *)segue.destinationViewController;
destinationController.source = value

然后你可以根据来源的价值采取行动。这可能不是最优雅的方式,但应该可以。

---编辑:---

如果您的“详细”视图控制器以模态方式呈现,您也可以尝试使用 [self presentingViewController]。这应该为您提供呈现它的视图控制器,您可以尝试使用 isKindOfClass 进行区分吗?

【讨论】:

是的,我正在考虑这个问题,但这似乎是一件很常见的事情,会有更好的解决方案...... 我已经对答案进行了编辑,但替代方法只能用于模态视图控制器。

以上是关于不同的 Unwind Segue 取决于来源的主要内容,如果未能解决你的问题,请参考以下文章

iOS从推送segue中检测unwind segue

UINavigationController 的 Unwind Segue

如何以编程方式执行Unwind segue?

以编程方式执行 unwind segue

从 Unwind segue 触发时,Push segue 不起作用

使用带有情节提要参考的“Unwind Segue”时“没有标识符的segue”