Swift 缺少参数'的参数;编码器&x27;在调用中,在UIViewControllerRepresentable结构中
我正试图使用UIViewControllerRepresentable在快速UI视图中包装UIAbbarController,但遇到了一个我已经好几天没能解决的问题。我仔细研究了每一条可能的线索,并尝试了所有提出的解决方案,但没有成功。任何帮助都将不胜感激 TabViewController.swiftSwift 缺少参数'的参数;编码器&x27;在调用中,在UIViewControllerRepresentable结构中,swift,xcode,uiviewcontroller,swiftui,nscoder,Swift,Xcode,Uiviewcontroller,Swiftui,Nscoder,我正试图使用UIViewControllerRepresentable在快速UI视图中包装UIAbbarController,但遇到了一个我已经好几天没能解决的问题。我仔细研究了每一条可能的线索,并尝试了所有提出的解决方案,但没有成功。任何帮助都将不胜感激 TabViewController.swift import UIKit import ResearchKit import CareKit import SwiftUI struct TabBarView: UIViewControlle
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
}
我还附上了一个显示确切错误的屏幕截图。尝试将所有内容移动到
init
,如下所示(在这种情况下,您不需要编码器)
你为什么感到惊讶?您实现了
init(coder:)
,现在这是您仅有的初始值设定项。当您说TabBarViewController()
时,您正在调用另一个初始值设定项,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")
}
}