gpt4 book ai didi

ios - 了解 Swift 文件之间的交互 ​​- 如何从一个文件调用另一个文件

转载 作者:行者123 更新时间:2023-11-29 00:47:28 26 4
gpt4 key购买 nike

我有我的 ViewController.swift,它是应用程序加载时第一个运行的。然后我转到另一个 SecondViewController.swift 文件。

ViewController.swift 实例仍然存在,对吗?

现在,我从 SecondViewController.swift 调用 ViewController().someFunction()

ViewController 的“viewDidLoad”不会被调用,只有我专门调用的函数。

现在:如果我在 ViewController.swift 中实例化一个 Int 变量“var testNum = 2”,并在 ViewController 的 viewDidLoad 中将其值更改为 14。然后我转向 SecondViewController。然后我调用 ViewController().someFunction() 并在该函数中打印 testNum 的值,我得到实例化值 2 而不是 ViewController 的值 14,这让我相信我已经创建了通过以这种方式调用函数来创建 ViewController 的新副本。

是吗?那是我所做的吗?如果是这样,有没有办法调用现有 ViewController 中的函数,而不是从 SecondViewController.swift 中创建新的 ViewController?

谢谢!

最佳答案

I have my ViewController.swift which is the first to run when the app loads. I then segue to another SecondViewController.swift file.

吹毛求疵:您不在"file"之间切换,而是在这些文件中定义的类实例之间切换。

The ViewController.swift instance is still in existence, correct?

是的。那么,该文件中定义的类的原始实例,请参见上文。

So now, from SecondViewController.swift, I call ViewController().someFunction()

The ViewController's "viewDidLoad" does not get called, only the function I specifically called to.

使用 ViewController(),您可以创建 ViewController 类的新实例,然后直接在其上调用该方法。这没有多大意义。

Now: if I instantiate an Int variable in ViewController.swift "var testNum = 2" and in the ViewController's viewDidLoad I change its value to 14. Then I segue to SecondViewController. Then I call to ViewController().someFunction() and I print the value of testNum in that function, I get the instantiated value of 2

当您调用 ViewController() 时,您创建了一个在 ViewController.swift 中定义的类的实例。很(非常)可能这不是您想要做的。看来您更想保留该 VC 的原始实例。所以你需要在进行 segue 时传输它。

我确定您已经阅读了 View Controller Programming Guide for iOS , 正确的? ;-) 这是一个相关部分:

The prepareForSegue:sender: method of the source view controller lets you pass data from the source view controller to the destination view controller. The UIStoryboardSegue object passed to the method contains a reference to the destination view controller along with other segue-related information.

通常您不希望保留对原始 View Controller 的引用,而是将相关数据从它传输到您继续访问的 VC(以解耦它们)。

关于ios - 了解 Swift 文件之间的交互 ​​- 如何从一个文件调用另一个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38468918/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com