在 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?