Ios 调用Objective-C中swift view控制器文件的变量
我有一个项目,是一个使用桥接头的Swift和Objective-C的交叉 在我的主ViewController.swift文件中,在类声明之外,我有以下代码:Ios 调用Objective-C中swift view控制器文件的变量,ios,objective-c,swift,uiviewcontroller,Ios,Objective C,Swift,Uiviewcontroller,我有一个项目,是一个使用桥接头的Swift和Objective-C的交叉 在我的主ViewController.swift文件中,在类声明之外,我有以下代码: var mainView = ViewController() 在我选择的其他视图中,我可以通过使用mainView.runFunction() 如何在Objective-C.m实现文件中调用此函数 谢谢 遵循这篇苹果文章并完成:。 或者我已经做了一个使用“@objc”键的“技巧”,看看这个小解释:,一个简单的方法就是创建一个对Obje
var mainView = ViewController()
在我选择的其他视图中,我可以通过使用mainView.runFunction()
如何在Objective-C.m实现文件中调用此函数
谢谢 遵循这篇苹果文章并完成:。 或者我已经做了一个使用“@objc”键的“技巧”,看看这个小解释:,一个简单的方法就是创建一个对Objective-c类可见的helper函数,如下所示:
@objc func retrieveMainView() -> UIViewController { return MyViewController() }
你从objective-c类中调用它,也许你需要用@objc来命名你的swift类,看看这两个引用,你会得到这个想法并确定答案。首先,要在objective-c中使用swift,你需要导入
TargetName swift.h
。请注意,它是目标名称
有关更多信息,请参阅
您可以通过以下方式实现您的目标:
ViewController *mainView = [[UIViewController alloc] init];
[mainView runFunction];
您还应该使用@objc
声明您的运行函数,以便在objective-c中使用它,如下所示:
@objc func runFunction {
// what you want to do ...
}
在目标文件(即.m文件)中,添加以下导入声明:
import "<ProjectName>-Swift.h"
并像这样调用函数:[mainView runFunction]代码>
我希望这会有所帮助。你也可以参考我的一个答案:
谢谢您的回答。即使我有一个ViewController.swift文件并将@objc
添加到其类定义中,您的代码仍会弹出错误“未知接收器ViewController”-如果我添加#import“project swift.h”
,那么视图控制器会在代码的第一行被识别,但第二行显示错误“对于'UIViewController'没有可见的@interface声明选择器'runFunction'”
@RanLearns答案已更新。这是一个口误!感谢您的回答。我相信我的导入语句是正确的(运行时没有错误),但[mainView runFunction];出现错误,因为使用了未声明的标识符“mainView”
是的,谢谢。我将另一个答案标记为正确。我必须先实例化ViewController,然后才能对其调用函数。
import "MyProject-Swift.h"