没有 UI 元素的 Segue 和 Unwind segue

Segue and Unwind segue without UI element

我一直在 SO 上寻找这个问题的答案,但没有成功。

我有 UIViewController A 和 B。它们在 Storyboard 中没有链接,我想执行从 A 到 B 的 Segue,然后单击 B 中的按钮来激活unwindSegue 到 A.

到目前为止我有:

1) A 中的 @IBAction 展开回 2) 准备从A到B的Segue函数(In A) 3) 从 B 调用 unwindSegue 到 A

的按钮

我缺少的是2中函数的逻辑。

关于 B 的更多信息:

标题:过滤视图 Class:过滤视图控制器 故事板 ID:FilterView

我尝试创建一个 segue:

let segueToFilter = UIStoryboardSegue(identifier: "SegueToFilterView", source: self, destination: FilterViewController)

认为这可能正是我所需要的。

但是我得到这个错误:

Cannot convert value of type 'FilterViewController.Type' to expected argument type UIViewController

帮助将不胜感激:)

我仍然不明白 segues 是如何给你带来问题的,但是如果你 真的 真的 不想使用 segues ,您可以尝试以编程方式显示和关闭 VCs。

想法是这样的:

  • 创建您的 VC
  • 的实例
  • 通过设置一些属性将数据传递给它
  • 出席!
  • 在VC中,解雇。

如果您将 VC 嵌入到导航控制器中,实际代码会有所不同。您可以在导航控制器上调用 pushVCpopVC,而不是调用 presentdismiss

let storyboard = UIStoryboard(name: "Main", bundle: nil)
let vc = storyboard.instantiateViewController(withIdentifier: "FilterView") as FilterViewController
vc.someProperty = someData // this is where you pass data
vc.present(vc, animated: true, completion: nil)

要传回数据,您应该通过创建第一个 VC 符合的 FilterViewDelegate 来使用委托模式。在 Google 上查找更多信息。