Objective-C工程混编Swift&SwiftUI

Objective-C工程混编Swift&SwiftUI

一、Objective-C代码中调用Swift

1. targe-build settings-swift compiler general-objective-C Bridging Header 添加
你的工程路径/工程名称-Bridging-Header.h
(在你第一次创建Swift文件会弹框提示是是否要配置,点“是”就行了)

2. 在Objective-C代码中导入“工程名称-Swift.h”文件(例如:#import "HbbFood-Swift.h")

3. 注意Swift类和被调用的方法要使用@objc来修饰

4. 使用Objective-C的语法调用即可

1.2. Objective-C代码中调用SwiftUI

如果要跳转到SwiftUI,要创建Wrapper类来调用SwiftUI
import SwiftUI

@objc
class MySwiftInterface : NSObject {
    @objc func makeSwiftUI() -> UIViewController {
        let sv = SwiftUIView()
        return UIHostingController(rootView: sv)
    }
}

二、Swift代码中调用Objective-C

1. 在“工程名称-Bridging-Header.h”文件中导入对应的.h文件(例如“#import "HFRLLoginVC.h"”)

2. 用Swift的语法调用即可

2.2. SwiftUI跳转到Ojbective-C的控制器

如果调用Objective-C控制器需要创建实现UIViewControllerRepresentable的Wrapper类“MySwiftLoginPage”
import SwiftUI

struct MySwiftLoginPage : UIViewControllerRepresentable {
    
    func makeUIViewController(context: UIViewControllerRepresentableContext<MySwiftLoginPage>) -> HFRLLoginVC {
        let vc = HFRLLoginVC()
        return vc
    }
    
    func updateUIViewController(_ uiViewController: HFRLLoginVC, context: UIViewControllerRepresentableContext<MySwiftLoginPage>) {
        
    }
    
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Swift从2014年发布到现在,马上接近三年,经过苹果的不断改进和完善,语法方面已经趋于稳定。如果是新建的项目,...
    Lebron_James阅读 8,882评论 4 43
  • 原文链接:http://www.jianshu.com/p/084f2ca45007# 随着Swift的改进及Sw...
    moxuyou阅读 872评论 1 2
  • 脸上又过敏,明明才刚到春天。去年因为过敏,额头还有一大块没有好的地方。想仔细看看脸上鼓的红疙瘩,就自己用后视相机拍...
    朵儿79阅读 286评论 0 1
  • 或被风吹 或被雨打 天长日久的侵蚀 将我手中的杠杆风化 执着的我 牢牢的守着支点 静候 天时地利的变化
    娑婆如斯阅读 429评论 2 27
  • 今年大三了,再过两年就将毕业,步入社会工作。专业是英语,可是以后并不想从事相关工作,最近一直在思考毕业后做什么,能...
    Cat20阅读 132评论 0 0

友情链接更多精彩内容