Objective-C工程混編Swift&SwiftUI
一、Objective-C代碼中調(diào)用Swift
1. targe-build settings-swift compiler general-objective-C Bridging Header 添加
你的工程路徑/工程名稱-Bridging-Header.h
(在你第一次創(chuàng)建Swift文件會彈框提示是是否要配置遗嗽,點“是”就行了)
2. 在Objective-C代碼中導(dǎo)入“工程名稱-Swift.h”文件(例如:#import "HbbFood-Swift.h")
3. 注意Swift類和被調(diào)用的方法要使用@objc來修飾
4. 使用Objective-C的語法調(diào)用即可
1.2. Objective-C代碼中調(diào)用SwiftUI
如果要跳轉(zhuǎn)到SwiftUI冰悠,要創(chuàng)建Wrapper類來調(diào)用SwiftUI
import SwiftUI
@objc
class MySwiftInterface : NSObject {
@objc func makeSwiftUI() -> UIViewController {
let sv = SwiftUIView()
return UIHostingController(rootView: sv)
}
}
二怎燥、Swift代碼中調(diào)用Objective-C
1. 在“工程名稱-Bridging-Header.h”文件中導(dǎo)入對應(yīng)的.h文件(例如“#import "HFRLLoginVC.h"”)
2. 用Swift的語法調(diào)用即可
2.2. SwiftUI跳轉(zhuǎn)到Ojbective-C的控制器
如果調(diào)用Objective-C控制器需要創(chuàng)建實現(xiàn)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>) {
}
}
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者