Swiftui 当UIKit>;迅捷>;UIKit
从SwiftUI视图推送到UIKit时,导航栏项目不存在或未添加 我在故事板中添加了一项,在代码中添加了一项,两项都没有显示 这可能是SwiftUI中的一个bug,但我觉得这可能是一个非常常见的情况,也许我遗漏了什么 这个问题有些重叠:尽管我不确定它们是否相同 结果 投入Swiftui 当UIKit>;迅捷>;UIKit,swiftui,uinavigationcontroller,uinavigationbar,uibarbuttonitem,Swiftui,Uinavigationcontroller,Uinavigationbar,Uibarbuttonitem,从SwiftUI视图推送到UIKit时,导航栏项目不存在或未添加 我在故事板中添加了一项,在代码中添加了一项,两项都没有显示 这可能是SwiftUI中的一个bug,但我觉得这可能是一个非常常见的情况,也许我遗漏了什么 这个问题有些重叠:尽管我不确定它们是否相同 结果 投入 没有代码,只有故事板 没有代码,只有故事板 在3和4之间粘合 struct MyUIKitView: UIViewControllerRepresentable { typealias UIViewControl
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("♻️")
}
}
类MyUIKitViewController:UIViewController{
重写func viewDidLoad(){
super.viewDidLoad()
//SwiftUI视图使用了自己的导航控制器,它忽略了UIKit导航控制器,因此可能的解决方案是将导航栏设置为父控制器,并通过编码设置导航栏元素
像这样
类MyUIKitViewController:UIViewController{
重写func viewDidLoad(){
super.viewDidLoad()
//这很有效,谢谢!我编辑了你的答案,只是因为我没有注意到DispatchMain位,我认为它不起作用。我会在16小时后奖励赏金!这是我使用的代码:DispatchQueue.main.async{self.parent?.navigationItem.RightBarButtonim=UIBarButtonim(barButtonSystemItem:.添加,目标:自我,操作:#选择器(self.addPhoto(:))}
struct SwiftUIView: View {
var body: some View {
NavigationLink(
destination: MyUIKitView(),
label: {
Text("Go to MyUIKitView")
})
}
}
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("♻️")
}
}