【问题标题】:Passing data from Objective-C Viewcontroller to Swift ViewController将数据从 Objective-C Viewcontroller 传递到 Swift ViewController
【发布时间】:2017-11-08 12:25:28
【问题描述】:

我正在尝试将数据从 Objective-C ViewController 传递到 Swift ViewController,但在我的 Objective-C 控制器中出现此错误:

在“UIViewController”类型的对象上找不到属性“类型”

我的 Objective-C 代码:

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

导入到 Bridging-header 文件中:

#import "PassportViewController.h"

并在我的 Swift 视图控制器中创建了相应的字符串

let type = ""

感谢您的帮助

【问题讨论】:

  • 你需要从Objective-C导入的类中创建一个对象。
  • 哦...请问您是否有任何示例可以与我分享?谢谢
  • 我已经有一年没做过了,但我觉得有点像下面这样。让 passportInstance: PassportViewController = PassportViewController()
  • 我会调查这个,谢谢:)
  • 创建 Swift 类的对象。例如IdentitySelfieViewController * mainController.

标签: ios swift objective-c xcode uiviewcontroller


【解决方案1】:

你的问题的解决方法是这样的:

首先在您的 Swift 控制器中添加 @Objc 在 class 关键字之前,如下所示:

@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";

【讨论】:

  • 你是我的英雄 :) 非常感谢你的时间和回答。
  • 所以我的变量被识别了;看来我可以将它从 Objective-C 传递给 Swift。您将如何检索 Swift 控制器中的值?而不是这样写:public var myValue:String = "" - 再次感谢
  • 在传递值之后非常简单,您可以只在 Swift Controller 中的变量,它将具有您传递的值。
  • 或任何可能与我犯同样愚蠢错误的人。在第 2 步中,确保使用来自stackoverflow.com/questions/24078043/… 的 (ProjectName)-Swift.h,而不是 (ClassName)-Swift.h
  • 在我的Swift4.2中,我需要在变量声明之前添加@objc。示例:@objc public var myValue:String = ""
【解决方案2】:

这是你的快速课程

第 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;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-04
    • 2015-03-19
    相关资源
    最近更新 更多