将数据从Objective-C Viewcontroller传递到Swift ViewController

时间:2017-06-07 08:43:45

标签: objective-c swift uiviewcontroller

我正在尝试将数据从objective-c ViewController传递到Swift ViewController,我在Objective-C控制器中收到此错误:

  

在'UIViewController'类型的对象上找不到属性'type'

我的Objective-C代码:

UIViewController *mainController = [self.storyboard instantiateViewControllerWithIdentifier:@"IdentitySelfieViewController"];
mainController.type = "passport";
[self.navigationController pushViewController:mainController animated:YES];

导入Bridging-header文件:

#import "PassportViewController.h"

并将相应的String创建到我的Swift View Controller

let type = ""

感谢您的帮助

2 个答案:

答案 0 :(得分:3)

问题的解决方案是这样的:

首先在你的Swift控制器中添加@Objc之前的类关键字:

@objc class ViewController: UIViewController

并在该控制器中创建一个类似的变量:

public var myValue:String  = ""

Objective-C ViewController之后,您需要导入此内容并牢记这一点非常重要。

#import "TargetName-Swift.h"

TargetName应替换为您的目标名称。在此之后,您可以轻松地调用该Swift控制器的变量:

ViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"VC"];
vc.myValue = @"Hello";

答案 1 :(得分:0)

这是你的速成班

步骤1:

class SwiftClassController: UIViewController {
//Required variables
@objc var deviceId: String?
@objc var deviceObj: CustomType?

第2步:

在Objective C类中导入#import "YourProjectName-Swift.h"

第3步:

在来自Swift文件的Objective C类访问变量中

YourViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"YourVC"];
vc.deviceId = @"1234567";
vc. deviceObj = yourCustomObject;