【问题标题】:View controllers's communication with swift用swift查看控制器的通信
【发布时间】:2015-03-20 22:05:38
【问题描述】:

我有两个标签,所以我有两个视图控制器,我需要从第一个视图控制器更新第二个标签。示例:

用户在第一个选项卡中按下一个按钮(所以第一个视图控制器)然后我必须更新第二个选项卡内的标签。

我想我必须从第一个视图控制器调用第二个视图控制器的方法。

用 swift 最好的方法是什么?

【问题讨论】:

    标签: swift


    【解决方案1】:

    您需要在一个视图控制器中声明一个属性以使其知道另一个视图控制器。在引用中声明

    @IBOutlet weak var otherController:OtherViewController!
    

    在您的 AppDelegate 中,当所有视图都被实例化时,像这样放置引用:

    @IBOutlet weak var referencingController: AController!
    // ...
    referencingController.otherController = otherController
    

    现在你有了参考,你可以在参考类中使用它

    otherController.doSomething()
    

    请注意上述var 声明中的!。这将在使用时自动打开 otherController

    【讨论】:

    • 谢谢,我会使用这种方式或通知中心。您建议哪个?
    • 以上为直接方式。我更喜欢它。
    • 你能解释更多的应用委托部分吗?因为我不明白我应该把什么放在应用程序委托
    • 您需要从两个视图中将一个出口拖到您的 AppDelegate 中。使用它们将一个放入另一个(上面的作业)
    【解决方案2】:

    有两种方法可以实现。

    1. 首先声明一个委托 - 添加一个方法,然后在第二个实现它 (如果您确定点击时只需要更新一个 VC(2nd))

    2. 使用通知中心发布通知并观察其他 VC 的通知。 (如果您认为未来可能有很多 VC 需要更新)。

    编码愉快。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-21
      • 2013-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多