在swift中从单独的视图控制器调用函数

时间:2016-07-23 14:31:28

标签: ios swift xcode delegates viewcontroller

我认为解决方案需要使用委托,但我不熟悉如何使用委托。 所以在我的项目中,我的主viewcontroller/storyboard包含UIScrollViewUIScrollview将另一个故事板(xib file)称为子视图。另一个故事板(xib file)由另一个swift文件控制。

我的问题是,当我在其他故事板中调用一个动作时,如何从主viewcontroller调用一个函数。比如说来自第一个viewdidload的{​​{1}}。 我无法使整个事物成为一个全局函数,它需要保持在同类中。因此,如果我尝试viewcontroller,它需要(我认为)一个实例变量或其他东西。

感谢。

2 个答案:

答案 0 :(得分:0)

您可以尝试:

  1. 在UIViewController类型的其他类中使用弱变量(属性)
  2. 在初始化其他视图后将父视图控制器分配给该属性
  3. 关于弱,强,无主参考HereHere

    的好读物

答案 1 :(得分:0)

首先,如果您想使用类名调用它,如上所述,请使用“class”声明您的方法。所以它就像Java中的静态一样。它使得在项目中的任何位置调用它是通用的。单独进行扩展。

class func myfunc(){
}

如果要将数据从B发送到A控制器。您使用所谓的委托。您将B的工作交给A.在B之上创建一个协议,用于您想要执行的功能或与它们一起发送的功能。在B中调用它们然后在这些函数的写代码中。这样你就拥有从B到A的数据

否则你需要像普通数据这样的东西。创建一个单例类并在那里初始化属性方法。您可以使用该对象并在其他控制器中调用它来修改或创建不同的实例。

你不打电话给viewDidLoad()。正如名称所说它加载一次。如果您想要在每次出现屏幕时修改某些内容,请使用viewWillAppear