阅读 700

OC与Swift初级混编 控制器的跳转

简单的实现OC控制器和Swift控制器的点击跳转

创建demo

1.建立一个demo项目 名字为 OCSwift 初始化的选择语言是OC的

2.我分了两个组 一个OC 一个Swift 各自建立了控制器

3.OCSwift-Bridging-Header 这个文件是 在建立swift时候自己默认添加的 选择添加(作用是完成Swift->OC)简单来说就是 Swift文件中要调用OC的方法时需要将OC的 XXX.h 文件引入 如

#import "OCTestViewController.h"
复制代码

4.在Main.storyboard中加一个导航栏 这个箭头注意修改,把navigation的默认控制器删除 把原来的ViewController 设为rootViewController 加一个按钮

给这个Swift控制器也加一个按钮

开始操作

1.ViewController->SwiftTestVC

  • #import "OCSwift-Swift.h" 要先在控制器中引入这个头文件 XXX-Swift.h XXX 就是这个工程的名字 应该就是这个

    • 现在我把这个改了 OCSwiftHH 就报错找不到了

  • 我把这个改成 这样就没有错就可以运行了 所以这个最好不要写中文或者特殊符号吧(没测试过)

  • 简单的跳转push过去

    - (IBAction)pushAction:(id)sender {
//    Swift1VC *swiftVC = [[Swift1VC alloc]init];
//    [self.navigationController pushViewController:swiftVC animated:YES];
    SwiftTestVC *swiftVC = [[SwiftTestVC alloc]init];
    [self.navigationController pushViewController:swiftVC animated:YES];
}
复制代码
  • 2.SwiftTestVC->OCTestViewController
    • 在桥接文件中引入头文件 #import "OCTestViewController.h"
    • 写上Push就完成了
    @IBAction func push(_ sender: Any) {
        let ocTestVC = OCTestViewController()
        self.navigationController?.pushViewController(ocTestVC, animated: true)
    }
复制代码

3.OC调用Swift 的类属性或者 对象方法 静态方法 要加 下面的关键字

@objcMembers @objc

4.Swift调用OC 的类属性或者对象方法 静态方法 把方法写到 .h 文件里面

5.这个不用我们自己创建

进去查看会发现 里面有我们写的Swift两个控制器的 类 个人认为应该是编译器已经帮我们做好了就是凡是在Swift里面调用的方法他都转好了

假如一开始 创建桥接文件 手贱没有点创建怎么办

1.选中工程,点击New File ->iOS-> Header File; 2.点击Next,为桥接文件命名; 3.点击Create; 4.在Build Setting -> Objective-C Bridging Header添加桥接文件路径,路径的格式为: $(SRCROOT)/Bridging-Header.h

如果你建立在工程里面的文件夹里了,需要在中间写上文件夹的名字,如: $(SRCROOT)/文件夹名/Bridging-Header.h;

5.编译一下,路径填写不对编译会报错!!! 编译成功 在桥接文件里面使用#import引入相应的OC头文件,就可以使用引入的OC文件了;

文章分类
iOS
文章标签