2016-07-23 111 views
0

我认为这个解决方案需要使用委托,但我不熟悉如何使用它们。 所以在我的项目中,我有我的主viewcontroller/storyboard,其中包含UIScrollView。那UIScrollview调用另一个故事板(xib file)作为子视图。另一个故事板(这是一个xib file)由另一个swift文件控制。在swift中从不同的视图控制器调用函数

我的问题是,当我在其他故事板中调用动作时,如何从主viewcontroller调用一个函数。比如说从第一个viewcontroller开始viewdidload。 我不能使整个事物成为一个全局函数,它需要留在它的类中。所以如果我试图做ViewController.viewDidLoad()它需要(我认为)一个实例变量或其他东西。

谢谢。

回答

0

你可以试试:

  1. 类型为UIViewController中
  2. 其他类使用弱变量(属性)另一种观点初始化后父视图控制器分配给该属性

良好的读取关于弱,强,无主基准HereHere

0

首先,如果你想c所有与类名称一样,如上所述,用“class”声明您的方法。所以它就像Java中的静态一样。它使得它在你的项目中的任何地方称为通用的。做一个单独的扩展。

class func myfunc(){ 
} 

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

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

你不叫viewDidLoad()。正如名字所说,它加载一次。如果您希望每次出现屏幕时都要修改某些内容,请使用viewWillAppear

+0

我知道我可以这样做,使静态方法成为可能。但在我的情况下,我想调用的方法需要静态需要有一个UIScrollview连接到它。如果它不在课堂上,那不会发生。对?我不知道如何解决这个问题。 – acday

相关问题