在 Objective-C 中调用 swift 视图控制器文件的变量
Calling to a variable of swift view controller file in Objective-C
我有一个项目是 Swift 和 Objective-C 使用桥接头的交叉项目。
在我的主 ViewController.swift 文件中,在 class 声明之外,我有以下代码:
var mainView = ViewController()
在我看到的其他视图中,我可以通过使用 mainView.runFunction()
来调用 运行 返回主 ViewController 的函数
如何在 Objective-C.m 实现文件中调用此函数?
谢谢!
关注这篇苹果文章并完成:Load Swift in Objective-C。
或者我已经做了 "trick" 使用“@objc”键,看看这个小解释:What is @objc attribute,一个简单的方法就是创建一个对你的 Objective-c 可见的辅助函数class 并像这样完成:
@objc func retrieveMainView() -> UIViewController { return MyViewController() }
你从你的 objective-c class 调用它,也许你需要用 @objc 注释你的 swift class,看看这两个参考你会了解想法并确定。
首先要在 objective-c 中使用 swift,您需要导入 TargetName-Swift.h
。请注意,它是目标名称。
有关详细信息,请查看 this。
你可以通过这种方式实现你想要的:
ViewController *mainView = [[UIViewController alloc] init];
[mainView runFunction];
您还应该使用 @objc
声明您的 runFunction
以便在 objective-c 中使用它,如下所示:
@objc func runFunction {
// what you want to do ...
}
在您的 Objective 文件中,即 .m 文件中,添加以下导入语句:
import "<ProjectName>-Swift.h"
例如,您的项目名称是 MyProject,因此导入语句如下所示:
import "MyProject-Swift.h"
然后像这样调用你的函数:[mainView runFunction];
希望对您有所帮助。你也可以参考我的一个回答:
How can I import Swift code to Objective-C?
我有一个项目是 Swift 和 Objective-C 使用桥接头的交叉项目。
在我的主 ViewController.swift 文件中,在 class 声明之外,我有以下代码:
var mainView = ViewController()
在我看到的其他视图中,我可以通过使用 mainView.runFunction()
如何在 Objective-C.m 实现文件中调用此函数?
谢谢!
关注这篇苹果文章并完成:Load Swift in Objective-C。 或者我已经做了 "trick" 使用“@objc”键,看看这个小解释:What is @objc attribute,一个简单的方法就是创建一个对你的 Objective-c 可见的辅助函数class 并像这样完成:
@objc func retrieveMainView() -> UIViewController { return MyViewController() }
你从你的 objective-c class 调用它,也许你需要用 @objc 注释你的 swift class,看看这两个参考你会了解想法并确定。
首先要在 objective-c 中使用 swift,您需要导入 TargetName-Swift.h
。请注意,它是目标名称。
有关详细信息,请查看 this。
你可以通过这种方式实现你想要的:
ViewController *mainView = [[UIViewController alloc] init];
[mainView runFunction];
您还应该使用 @objc
声明您的 runFunction
以便在 objective-c 中使用它,如下所示:
@objc func runFunction {
// what you want to do ...
}
在您的 Objective 文件中,即 .m 文件中,添加以下导入语句:
import "<ProjectName>-Swift.h"
例如,您的项目名称是 MyProject,因此导入语句如下所示:
import "MyProject-Swift.h"
然后像这样调用你的函数:[mainView runFunction];
希望对您有所帮助。你也可以参考我的一个回答: How can I import Swift code to Objective-C?