美文网首页
Objective-C工程混编Swift&SwiftUI

Objective-C工程混编Swift&SwiftUI

作者: mrapem | 来源:发表于2020-02-01 21:03 被阅读0次

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>) {
        
    }
    
}

相关文章

网友评论

      本文标题:Objective-C工程混编Swift&SwiftUI

      本文链接:https://www.haomeiwen.com/subject/gxaxxhtx.html