Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.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
Swift 缺少参数'的参数;编码器&x27;在调用中,在UIViewControllerRepresentable结构中_Swift_Xcode_Uiviewcontroller_Swiftui_Nscoder - Fatal编程技术网

Swift 缺少参数'的参数;编码器&x27;在调用中,在UIViewControllerRepresentable结构中

Swift 缺少参数'的参数;编码器&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

我正试图使用UIViewControllerRepresentable在快速UI视图中包装UIAbbarController,但遇到了一个我已经好几天没能解决的问题。我仔细研究了每一条可能的线索,并尝试了所有提出的解决方案,但没有成功。任何帮助都将不胜感激

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
  }

我还附上了一个显示确切错误的屏幕截图。

尝试将所有内容移动到
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")
    }
}