当从SwiftUI视图推到UIKit时,导航栏项可能不存在或未添加。
我已经在Storyboard中添加了一个项目和一个代码中的项目,但都没有显示出来。
这可能是SwiftUI中的一个bug,但我觉得这可能是一个相当常见的情况,也许我漏掉了什么?
这个问题与这个问题有些重叠:Navigation Bar Items after push from SwiftUI to UIKit,虽然我不确定它们是否相同。
结果
输入
- 仅限Storyboard,无代码
- 仅限Storyboard,无代码
class MyHostingController: UIHostingController<SwiftUIView> {
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder, rootView: SwiftUIView())
}
}
struct SwiftUIView: View {
var body: some View {
NavigationLink(
destination: MyUIKitView(),
label: {
Text("Go to MyUIKitView")
})
}
}
3号和4号之间的粘合剂
struct MyUIKitView: UIViewControllerRepresentable {
typealias UIViewControllerType = MyUIKitViewController
func makeUIViewController(context: Context) -> MyUIKitViewController {
let sb = UIStoryboard(name: "Main", bundle: nil)
let myVC = sb.instantiateViewController(identifier: "MyUIKitViewController") as! MyUIKitViewController
return myVC
}
func updateUIViewController(_ uiViewController: MyUIKitViewController, context: Context) {
print("♻️")
}
}
class MyUIKitViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// ADD NAV BUTTON HERE
navigationItem.rightBarButtonItems?.append(UIBarButtonItem(systemItem: .camera))
}
}
- 无需编码,仅使用Storyboard
DispatchQueue.main.async { self.parent?.navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .add, target: self, action: #selector(self.addPhoto(_:))) }
- lewis