首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UIHostingController和navigationController

UIHostingController和navigationController
EN

Stack Overflow用户
提问于 2019-07-18 12:40:33
回答 1查看 1.1K关注 0票数 4

默认的navigationController中嵌入视图控制器并推送到下一个UIHostingController的快捷项目。

如何从navigationController?.popViewController调用SimpleView?

ViewController:

代码语言:javascript
复制
@IBOutlet weak var button: UIButton?

override func viewDidLoad() {
    super.viewDidLoad()
    button?.addTarget(self,
                      action: #selector(showNewSwiftUIController),
                      for: .touchUpInside)
}

@objc func showNewSwiftUIController() {
    let vc = UIHostingController(rootView:SimpleView())
    navigationController?.pushViewController(vc, animated: true)
}

SwiftUI:

代码语言:javascript
复制
struct SimpleView: View {
    var body: some View {
        Text("SimpleView")
            .foregroundColor(.black)
    }
}
EN

回答 1

Stack Overflow用户

发布于 2022-04-28 22:25:54

第一。你试过吗?

代码语言:javascript
复制
@Environment(\.presentationMode) var presentationMode: Binding<PresentationMode> // reference

然后在你的身体呼叫:

代码语言:javascript
复制
self.presentationMode.wrappedValue.dismiss()

如果这样做不起作用:

我建议您将导航控制器作为可选变量传递到View中,作为引用并从那里进行访问。其他选项(也许是更健康的选项)是将一个“回调”变量从父变量传递给childView,以关闭视图(您需要将导航保存为一个变量来跟踪)

最后一种选择(不建议)

代码语言:javascript
复制
if var topController = UIApplication.shared.windows.first?.rootViewController {
        
        while let presentedViewController = topController.presentedViewController {
            topController = presentedViewController
        }
        topController.navigationController.popViewController(animated:true)

 }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57094702

复制
相关文章

相似问题

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