嗨,我正在尝试为我的 IOS 项目应用 swinject,目前我被卡住了。
我的申请中有 2 个部分
- 登录部分
- 主要部分
场景是如果它在应用程序开始或登录成功完成时已经登录,它应该移动到主要部分,我希望他们每个人都有自己的故事板,swinject 范围分别管理实例。
登录完成后,应该新生成 MAIN 部分注入的实例,注销完成后,它应该回到 LOGIN 部分,并且主要部分注入的实例必须消失..
以下是我的视图控制器结构:
有了这个名称,我正在尝试使用下面的代码导航到 MAIN 视图,但不断出现错误。
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
// Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`.
// If using a storyboard, the `window` property will automatically be initialized and attached to the scene.
// This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead).
guard let _ = (scene as? UIWindowScene) else {
return
}
// add these lines
let storyboard = UIStoryboard(name: "Main", bundle: nil)
// if user is logged in before
if let loggedUsername = UserDefaults.standard.string(forKey: "username") {
// instantiate the main tab bar controller and set it as root view controller
// using the storyboard identifier we set earlier
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let mainTabBarController = storyboard.instantiateViewController(identifier: "MainTabBarController")
window?.rootViewController = mainTabBarController
} else {
// if user isn't logged in
// instantiate the navigation controller and set it as root view controller
// using the storyboard identifier we set earlier
let loginNavController = storyboard.instantiateViewController(identifier: "LoginNavigationController")
window?.rootViewController = loginNavController
}
}
extension SwinjectStoryboard {
@objc class func setup() {
defaultContainer.autoregister(UserProvider.self, initializer: UserProvider.init).inObjectScope(.container)
defaultContainer.storyboardInitCompleted(HomeViewController.self) { resolver, controller in
controller.userProvider = resolver ~> UserProvider.self
}
}
}
Storyboard (<SwinjectStoryboard.SwinjectStoryboard: 0x600002304300>) doesn't contain a view controller with identifier 'MainTabBarController'
我该怎么做才能解决这个问题?