【问题标题】:Passing CoreData Container from UITabBar to another VC将 CoreData 容器从 UITabBar 传递到另一个 VC
【发布时间】:2021-10-29 16:46:04
【问题描述】:

我想将容器从我的 Tabbar 传递给我的 VC,我尝试这样做,但根本不起作用。我该如何解决?

我的风险投资

class FavVC: UIViewController {
    var container: NSPersistentContainer!
    
    
    override func viewDidLoad() {
        super.viewDidLoad()
        guard container != nil else { fatalError("This view needs a persistent container.") }
        NSLayoutConstraint.activate([
        ])
    }
}

我的标签栏

class TabBar:UITabBarController {
    
    var container: NSPersistentContainer!
    
    @IBOutlet weak var TabBarContent: UITabBar!
    
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if let favVC = segue.destination as? FavVC {
            favVC.container = container
        }
       }
    
    override func viewDidLoad() {
        super.viewDidLoad()
        guard container != nil else { fatalError("This view needs a persistent container.") }
        print("it works!")
    }
}

【问题讨论】:

    标签: ios swift core-data uikit


    【解决方案1】:

    我认为你不需要在这里使用 segue,因为UITabBarController 会自动导航。尝试实现UITabBarControllerDelegate,为你的 TabBar 类添加这个扩展:

    extension TabBar: UITabBarControllerDelegate {
        
        func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool {
            if let favVC = viewController as? FavVC {
                favVC.container = container
            }
            
            return true
        }
    }
    

    然后像这样修改TabBarviewDidLoad

    override func viewDidLoad() {
        super.viewDidLoad()
        
        self.delegate = self
        
        guard container != nil else { fatalError("This view needs a persistent container.") }
        print("it works!")
    }
    

    现在你在 FavVC viewDidLoad 调用之前有了容器。

    【讨论】:

      【解决方案2】:

      如果你们有和我一样的挣扎。 你可以简单地添加

      if let tabBarVC = self.tabBarController as? TabBar {
                  self.container = tabBarVC.container
              }
      

      在你的 UIViewController 上

      【讨论】:

        猜你喜欢
        • 2020-03-15
        • 2017-12-10
        • 1970-01-01
        • 2019-08-26
        • 1970-01-01
        • 2017-01-25
        • 1970-01-01
        • 2020-09-18
        • 1970-01-01
        相关资源
        最近更新 更多