【问题标题】:Swift Send Data to a ViewController from a ViewController [duplicate]Swift 从 ViewController 向 ViewController 发送数据 [重复]
【发布时间】:2019-07-04 15:10:45
【问题描述】:

我尝试将过滤视图添加到Viewcontroller。我试图决定我该怎么做,但我不知道这个实现的最佳方式是什么。现在我在视图控制器上打开一个xib 文件(filterView),但我还有一个标签栏,由于标签栏,我没有与安全区域的底部约束对齐。

现在我决定在新的 VC 中打开,但我不知道如何传递这些过滤器数据。我想我有一些方法,如 "Observer" 、 "Core Data" 、 "UserDefaults" 或 "Dynamic class" 。这个问题的最佳方法是什么?

你能帮我回答这个问题吗?

我不使用 Segue 也不想使用 Segue 。我可以将数据 A 传递给 B,但反过来我必须在 A 中应用一个动作。我也不想在 viewDidAppear 中使用任何函数。

我用present(vc , animated: true)打开B控制器,然后用dismiss(animated: true , completion: nil)返回。

这不是任何问题的重复。

提前致谢

【问题讨论】:

标签: ios swift core-data struct nsuserdefaults


【解决方案1】:

让我们先进入一个页面。你有 viewController 并且你正在从代码中展示另一个 viewController?并且您想将第一个 viewController 的数据传递给第二个?

在您的数据传递情况下,不需要“用户默认值”和“CoreData”。

由于您没有使用 segue,您可以简单地通过委托或关闭或使用观察者来完成。

我在这里解释委托。

例如 Protocol DataPasser { func dataHolder(data: DataType) } 然后在你的第一个 viewController 中使用委托,比如

以上ViewDidLoad()方法

var delegate: DataPasser?

然后在重定向下一个 viewController 时只需调用 delegate?.dataHolder(yourData)

在下一个 viewController 中创建这个委托自己并扩展以使用这个委托,如 extension SecondViewController: DataPasser 并使用委托方法,您将在委托方法参数中获得您的数据。

希望这会对您有所帮助。如果不再问我.. 来帮忙。

【讨论】:

  • 这不是我的答案。我问的选择不是例子。感谢您的回答。
  • 对于数据传递,您可以使用协议、闭包和 NSNotificationCenter。但是 UserDefaults 和 CoreData 是个坏主意。
  • 借助这些,您可以将数据从任何地方传递到任何地方。甚至在你的 ViewController 堆栈中倒退
  • 我也写了这些方法。我问哪个是最好的方法。
  • 嗯,这取决于您的选择,这对您来说看起来很容易。我更喜欢您使用 NSNotificationCenter。
猜你喜欢
  • 2023-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-08
  • 1970-01-01
  • 2013-01-31
相关资源
最近更新 更多