首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查是否有导航,并从SwiftUI视图中显示和推送

检查是否有导航,并从SwiftUI视图中显示和推送
EN

Stack Overflow用户
提问于 2021-12-21 10:06:52
回答 1查看 677关注 0票数 0

我正在用SwiftUI做实验。我已经有了一个基于UIKit的应用程序工作,我想集成一个SwiftUI视图。我通过使用SwiftUI实现了显示这个UIHostingController视图。

在这个SwiftUI中,我拦截一个按钮动作。在这一行动中,我想:

  1. 检查是否有导航控制器(以前是self.navigationController on UIKit ),
  2. 是否能够从SwiftUI视图显示或推送(通过self.navigationController)一个新的UIKit视图控制器。

我在SwiftUI上找不到任何方法来实现这3件事

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-21 10:49:21

您可以通过多种方式完成此操作:委托、闭包或见鬼,甚至可以使用联合发布服务器。我认为,最简单的开始方式是行动结束。它可能看起来像这样:

代码语言:javascript
复制
struct SwiftUIView: View {
    let action: () -> Void
    
    var body: some View {
        Button("press me", action: action)
    }
}

class ViewController: UIViewController {
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        let swiftUIView = SwiftUIView(action: handleButtonPress)
        
        let hostingController = UIHostingController(rootView: swiftUIView)
        addChild(hostingController)
        
        hostingController.view.translatesAutoresizingMaskIntoConstraints = false
        view.addSubview(hostingController.view)
 
        NSLayoutConstraint.activate([
            hostingController.view.topAnchor.constraint(equalTo: view.topAnchor),
            hostingController.view.bottomAnchor.constraint(equalTo: view.bottomAnchor),
            hostingController.view.leadingAnchor.constraint(equalTo: view.leadingAnchor),
            hostingController.view.trailingAnchor.constraint(equalTo: view.trailingAnchor)
        ])
    }
    
    func handleButtonPress() {
        print("TODO: Insert navigation controller logic here")
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70433674

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档