我试图使用UITabBarController将一个UIViewControllerRepresentable包到SwiftUI视图中,但是遇到了一个我已经好几天没能解决的问题。我查看了每一个可能的线程,并尝试了所有提出的解决方案,没有任何运气。任何帮助都将不胜感激。
TabViewController.swift
import UIKit
import ResearchKit
import CareKit
import SwiftUI
struct TabBarView: UIViewControllerRepresentable {
func makeUIViewController(context: Context) -> UITabBarController {
let tabBarViewController = TabBarViewController()
return tabBarViewController
}
func updateUIViewController(_ uiViewController: UITabBarController, context: Context) {
}
typealias UIViewControllerType = UITabBarController
}
class TabBarViewController: UITabBarController {
fileprivate let carePlanStoreManager = CarePlanStoreManager.sharedCarePlanStoreManager
fileprivate let carePlanData: CarePlanData
fileprivate var symptomTrackerViewController: OCKSymptomTrackerViewController? = nil
fileprivate var insightsViewController: OCKInsightsViewController? = nil
fileprivate var insightChart: OCKBarChart? = nil
required init?(coder aDecoder: NSCoder) {
carePlanData = CarePlanData(carePlanStore: carePlanStoreManager.store)
super.init(coder: aDecoder)
carePlanStoreManager.delegate = self
carePlanStoreManager.updateInsights()
let careCardStack = createCareCardStack()
let symptomTrackerStack = createSymptomTrackerStack()
let insightsStack = createInsightsStack()
let connectStack = createConnectStack()
self.viewControllers = [careCardStack,
symptomTrackerStack,
insightsStack,
connectStack]
tabBar.tintColor = UIColor.systemTeal
tabBar.barTintColor = UIColor.white
}我还附上了一个屏幕截图,显示了确切的错误。

发布于 2020-11-12 18:24:21
尝试将所有内容移入init中,如下所示(在本例中不需要编码器)
class TabBarViewController: UITabBarController {
fileprivate let carePlanData: CarePlanData
fileprivate var symptomTrackerViewController: OCKSymptomTrackerViewController? = nil
fileprivate var insightsViewController: OCKInsightsViewController? = nil
fileprivate var insightChart: OCKBarChart? = nil
fileprivate let carePlanStoreManager = CarePlanStoreManager.sharedCarePlanStoreManager
init() {
carePlanData = CarePlanData(carePlanStore: carePlanStoreManager.store)
super.init(nibName: nil, bundle: nil)
carePlanStoreManager.delegate = self
carePlanStoreManager.updateInsights()
let careCardStack = createCareCardStack()
let symptomTrackerStack = createSymptomTrackerStack()
let insightsStack = createInsightsStack()
let connectStack = createConnectStack()
self.viewControllers = [careCardStack,
symptomTrackerStack,
insightsStack,
connectStack]
tabBar.tintColor = UIColor.systemTeal
tabBar.barTintColor = UIColor.white
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}https://stackoverflow.com/questions/64809497
复制相似问题