Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swiftui 当UIKit>;迅捷>;UIKit_Swiftui_Uinavigationcontroller_Uinavigationbar_Uibarbuttonitem - Fatal编程技术网

Swiftui 当UIKit>;迅捷>;UIKit

Swiftui 当UIKit>;迅捷>;UIKit,swiftui,uinavigationcontroller,uinavigationbar,uibarbuttonitem,Swiftui,Uinavigationcontroller,Uinavigationbar,Uibarbuttonitem,从SwiftUI视图推送到UIKit时,导航栏项目不存在或未添加 我在故事板中添加了一项,在代码中添加了一项,两项都没有显示 这可能是SwiftUI中的一个bug,但我觉得这可能是一个非常常见的情况,也许我遗漏了什么 这个问题有些重叠:尽管我不确定它们是否相同 结果 投入 没有代码,只有故事板 没有代码,只有故事板 在3和4之间粘合 struct MyUIKitView: UIViewControllerRepresentable { typealias UIViewControl

从SwiftUI视图推送到UIKit时,导航栏项目不存在或未添加

我在故事板中添加了一项,在代码中添加了一项,两项都没有显示

这可能是SwiftUI中的一个bug,但我觉得这可能是一个非常常见的情况,也许我遗漏了什么

这个问题有些重叠:尽管我不确定它们是否相同

结果

投入

  • 没有代码,只有故事板
  • 没有代码,只有故事板
  • 在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("♻️")
        }
    }
    
  • 类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("♻️")
        }
    }