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>) {
}
}
网友评论