在Objective-C中调用swift视图控制器文件的变量

时间:2018-12-31 13:07:08

标签: ios objective-c swift uiviewcontroller

我有一个使用网桥头的Swift和Objective-C交叉项目。

在我的主要ViewController.swift文件中,在类声明之外,我有以下代码:

var mainView = ViewController()

在我选择的其他视图中,我可以使用mainView.runFunction()

来使用它来调用要在主ViewController上运行的函数

如何在Objective-C .m实现文件中调用此函数?

谢谢!

3 个答案:

答案 0 :(得分:1)

首先,要在Objective-C中使用swift,您需要导入TargetName-Swift.h。请注意,这是目标名称。

有关更多信息,请查看this

您可以通过这种方式实现您想要的:

ViewController *mainView = [[UIViewController alloc] init];
[mainView runFunction];

此外,您还应将runFunction声明为@objc,以便在Objective-C中使用它,如下所示:

@objc func runFunction {
    // what you want to do ...
}

答案 1 :(得分:0)

关注此苹果文章并完成:Load Swift in Objective-C。 或者我已经做过一个使用“ @objc”键的“技巧”,请看一下这个小解释:What is @objc attribute,一种简单的方法是创建一个对您的Objective-c类可见的帮助函数,并像:

@objc func retrieveMainView() -> UIViewController { return MyViewController() }

然后您从Objective-C类中调用它,也许您需要使用@objc注释swift类,看看这两个引用,您将明白并确定。

答案 2 :(得分:0)

在您的目标文件(即.m文件)中,添加以下导入语句:

import "<ProjectName>-Swift.h"

例如,您的项目名称为MyProject,因此import语句应类似于:

import "MyProject-Swift.h"

并调用您的函数,例如:[mainView runFunction];

我希望这会有所帮助。您也可以参考我的答案之一: How can I import Swift code to Objective-C?