gpt4 book ai didi

UIViewControllerRepresentable : Navigation Title and Bar Button Items Ignored in NavigationView

转载 作者:行者123 更新时间:2023-12-01 14:05:03 27 4
gpt4 key购买 nike

  • 我有一个 UITableViewController我包裹在 UIViewControllerRepresentable 中的子类.
  • 我已经设置了 navigationItem.titlenavigationItem.leftBarButtonItems在我的 View Controller 中。
  • 我赠送我的 UIViewControllerRepresentable实例作为 SwiftUI 的目标 NavigationLink在 SwiftUI 中 NavigationView .
  • 当 View 被插入导航堆栈时,表格 View 出现,但标题和栏按钮项不出现。

  • 这里发生了什么?

    最佳答案

    解决了!

    问题与期望
    SwiftUI 在底层使用 UINavigationController。因此,如果我使用 UIViewControllerRepresentable 将 UIViewController 推送到 SwiftUI NavigationView,那么我希望该 View Controller 的导航项和工具栏项由所述导航 Controller 使用。正如我上面提到的,它们被忽略了。

    根本原因
    事实证明标题和项目被忽略,因为我的 View Controller 的父级不是预期的 UINavigationController。相反,它的父级是一个由 SwiftUI 在幕后使用的中间包装 View Controller ,它依次被推送到导航 Controller 上。它忽略了标题和项目,因为导航 Controller 正在向包装器询问其项目(没有),而不是我的 View Controller 。

    UIKit 解决方案
    所以,如果你想从你的 UIKit View Controller 设置标题或栏按钮项或工具栏项,那么你需要在它的父级上设置它们:

    self.parent?.navigationItem.title = “My Title”

    此外,您不能从 viewDidLoad 执行此操作,因为那时 View Controller 似乎尚未被 SwiftUI 父级包装。您必须在 viewWillAppear 中执行此操作。

    SwiftUI 解决方案
    您还可以从 SwiftUI 设置标题和栏按钮。在您的 UIViewControllerRepresentable 实例上,只需像往常一样添加 .navigationBarTitle 和前导/尾随项目。然后你可以让按钮从你的 UIViewControllerRepresentable 实现中与你的 View Controller 对话。

    关于UIViewControllerRepresentable : Navigation Title and Bar Button Items Ignored in NavigationView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59295507/

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