【发布时间】:2015-03-20 22:05:38
【问题描述】:
我有两个标签,所以我有两个视图控制器,我需要从第一个视图控制器更新第二个标签。示例:
用户在第一个选项卡中按下一个按钮(所以第一个视图控制器)然后我必须更新第二个选项卡内的标签。
我想我必须从第一个视图控制器调用第二个视图控制器的方法。
用 swift 最好的方法是什么?
【问题讨论】:
标签: swift
我有两个标签,所以我有两个视图控制器,我需要从第一个视图控制器更新第二个标签。示例:
用户在第一个选项卡中按下一个按钮(所以第一个视图控制器)然后我必须更新第二个选项卡内的标签。
我想我必须从第一个视图控制器调用第二个视图控制器的方法。
用 swift 最好的方法是什么?
【问题讨论】:
标签: swift
您需要在一个视图控制器中声明一个属性以使其知道另一个视图控制器。在引用中声明
@IBOutlet weak var otherController:OtherViewController!
在您的 AppDelegate 中,当所有视图都被实例化时,像这样放置引用:
@IBOutlet weak var referencingController: AController!
// ...
referencingController.otherController = otherController
现在你有了参考,你可以在参考类中使用它
otherController.doSomething()
请注意上述var 声明中的!。这将在使用时自动打开 otherController。
【讨论】:
有两种方法可以实现。
首先声明一个委托 - 添加一个方法,然后在第二个实现它 (如果您确定点击时只需要更新一个 VC(2nd))
使用通知中心发布通知并观察其他 VC 的通知。 (如果您认为未来可能有很多 VC 需要更新)。
编码愉快。
【讨论】: