美文网首页
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