swiftui - 从 UIKit 更新 @State var
问题描述
我有一个在列表视图中显示两个项目的 SwiftUI。我希望能够从 UIKit 推送所需的列表条目。为此,我创建了一个 @State var,我想从 UIKit 设置它以通过 NavigationLink 的选择参数上的绑定来触发所需的列表条目。
public struct DateOptions: View, MiscellaneousHelper {
@State var selectedItem: AppMainFeatureData? = nil
let tabBarController: TabBarController
public var body: some View {
NavigationView {
List(AppMainFeatureData.dateItems, id: \.self) { item in
NavigationLink(destination: DateFeatureController(svc: tabBarController.svc, feature: item),
tag: item, selection: $selectedItem) {
ImageText(text: item.title, imageName: item.iconName)
}
}
.navigationBarTitle(SideBarSection.dates.title)
}
}
}
这是我的 UIViewControllerRepresentable:
struct DateFeatureController: UIViewControllerRepresentable, MiscellaneousHelper {
let svc: SplitViewController
let feature: AppMainFeatureData
func makeUIViewController(context: Context) -> UINavigationController {
UINavigationController(rootViewController: feature.viewController)
}
func updateUIViewController(_ uiViewController: UINavigationController, context: Context) {
}
}
这是我如何在我的 UITabBar 中创建 DateOptions 以及如何将它添加到 viewControllers:
let dateViewController = UIHostingController(rootView: DateOptions(tabBarController: self))
dateViewController.tabBarItem = tabBarItem
viewControllers?.insert(dateViewController, at: 1)
这是我从 UITabBar 设置 selectedItem 的方法:
if let dateFeature = viewControllers?[selectedIndex] as? UIHostingController<DateOptions> {
dateFeature.rootView.selectedItem = .dateAddSubtract
dPrint("After \(dateFeature.rootView.selectedItem)")
}
但是打印显示 selectedItem 为零。
当用户触摸列表条目时,一切正常。
如何从 UIKit 设置 selectedItem?
解决方案
推荐阅读
- c# - 通过整个调用堆栈轻松在异步和同步之间切换(用于调试)
- c# - 向文本文件中的现有文本添加空格和字符
- requirejs - 为“base”requirejs 配置创建命名空间别名
- cluster-analysis - 基于密度的聚类验证 (DBCV) 永远不会停止运行
- lldb - 为什么 lldb 抱怨我的类需要一个转换运算符,即使它有一个?
- mysql - 在创建表时具有具有默认值的“创建日期”列
- jboss - 如何更改 jboss 时区?Java 属性不起作用
- firebase - Firestore在更新后获取Field.increment的值而不读取文档数据
- rest - 验证 API 响应
- powershell - 如何将下面的代码转换为 powershell 代码