Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/101.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 调用Objective-C中swift view控制器文件的变量_Ios_Objective C_Swift_Uiviewcontroller - Fatal编程技术网

Ios 调用Objective-C中swift view控制器文件的变量

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

我有一个项目,是一个使用桥接头的Swift和Objective-C的交叉

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

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"