从Objective C类的按钮操作加载基于Swift的ViewController

San*_*nto 3 action objective-c ios swift

注意:对于任何问题,它都不是重复的.我找不到任何一些操作方法的问题,并为基于swift的视图控制器创建实例.

我在目标c类.m文件中调用基于swift的视图控制器.

在我的ViewController.m我已导入桥头

#import "ViewController.h"
#import "Project-Bridging-Header.h"
Run Code Online (Sandbox Code Playgroud)

我想从下面的动作调用基于Swift的视图控制器

- (IBAction)tappedButnGo:(UIButton *)sender {

     SwiftViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"SwiftViewController"];
}
Run Code Online (Sandbox Code Playgroud)

我在这里得到一个错误

使用未声明的标识符SwiftViewController

以下是快速的课程

import UIKit

@objc class SwiftViewController: UIViewController {
 //so on
Run Code Online (Sandbox Code Playgroud)

而我BridgingHeader是空的.

SwiftViewController当我点击Objective C's按钮动作时,有人可以帮我装载吗?

Nir*_*v D 6

您需要importController.h文件中包含以下语句

#import "ProductModuleName-swift.h"
Run Code Online (Sandbox Code Playgroud)

PrductModuleName是您的项目名称

希望对你有帮助


Nit*_*hel 5

检查故事板标识符,如下图所示,您需要从 identiry InspectorSwiftViewController设置StoryBoardID :SwiftViewController

以下是在 Objective C 项目中使用 swift 类的步骤:

  • 创建新项目并选择 Objective C 语言。
  • 之后,当您创建新课程时,您会看到如下弹出窗口:

在此输入图像描述

  • 创建 Bridge 标头,然后转到构建设置并使用Defines Module进行搜索并为其设置值YES

  • 现在您需要swiftVeiwControllers像下面的代码一样创建 identifire 并转到第一个视图控制器

    在此输入图像描述

  • 现在您需要导入#import "obj_swift-Swift.h"。这里obj_swift是你的项目名称,所以它看起来像#import "yourprojectname-Swift.h"


就是这样,现在您只需要执行如下代码:

- (IBAction)PushSwift:(id)sender {

     SwiftViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"SwiftViewController"];

    [self.navigationController pushViewController:vc animated:YES];
} 
Run Code Online (Sandbox Code Playgroud)

这是示例演示代码:

https://github.com/nitingohel/obj_swift