gpt4 book ai didi

swift - 在 UIKit 中嵌入 SwiftUI 时无法隐藏导航栏

转载 作者:行者123 更新时间:2023-11-28 07:19:00 45 4
gpt4 key购买 nike

在将一些 SwiftUI 放入 UIKit UIViewController 时,我试图隐藏 navigationBar:

override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.navigationController?.setNavigationBarHidden(true, animated: animated)

但它不会消失。但是,当我拿走 SwiftUI 时,它就可以工作了。有谁知道如何解决这个问题?

编辑:

我正在实例化这样一个 View :

let controller = UIHostingController(rootView: view())

其中 view 是 SwiftUI,然后像添加任何 UIKit 元素一样将其添加到 UIView()

最佳答案

UIHostingViewController 尊重 SwiftUI View 的 navigationBarHidden 值。您可以在 SwiftUI View 的末尾调用 .navigationBarHidden(true),也可以使用下面示例中显示的自定义 UIHostingController 子类。

解决方案:

import SwiftUI
import UIKit

class YourHostingController <Content>: UIHostingController<AnyView> where Content : View {

public init(shouldShowNavigationBar: Bool, rootView: Content) {
super.init(rootView: AnyView(rootView.navigationBarHidden(!shouldShowNavigationBar)))
}

@objc required dynamic init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}

使用示例:

let hostVc = YourHostingController(shouldShowNavigationBar: false, rootView: YourSwiftUIView())

关于swift - 在 UIKit 中嵌入 SwiftUI 时无法隐藏导航栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58704688/

45 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com