[英]Access to class properties using switch in Swift
I have following class:我有以下 class:
class Router: NSObject {
enum Route {
case auth
case main
case news
}
private var authNavigationController: UINavigationController?
private var mainNavigationController: UINavigationController?
private var newsNavigationController: UINavigationController?
func setInitialVC(){
let vc = LoginService.initialVC()
setRootViewControllerWithNavigationControlledEmbeded(route: .auth,
viewController: vc)
}
private func getCurrentNavC(_ route: Route) -> UINavigationController?{
switch route {
case .auth:
return self.authNavigationController
case .main:
return self.mainNavigationController
case .news:
return self.newsNavigationController
}
}
private func setRootViewControllerWithNavigationControlledEmbeded(route: Route,
viewController: UIViewController){
var navC = getCurrentNavC(route)
self.window = UIWindow(frame: UIScreen.main.bounds)
navC = UINavigationController.init(rootViewController: viewController)
print("auth vc \(authNavigationController)")
print("navC \(navC)")
self.window?.rootViewController = navC
self.window?.makeKeyAndVisible()
}
}
When i call当我打电话时
setRootViewControllerWithNavigationControlledEmbeded(route: Route, viewController: UIViewController){
i suppose that var navC = getCurrentNavC(route)
will point to my class variable authNavigationController
but in log i can see following:我想
var navC = getCurrentNavC(route)
将指向我的 class 变量authNavigationController
但在日志中我可以看到以下内容:
auth vc nil
navC Optional(<UINavigationController: 0x7fd9ca025000>)
I want to get this properties with route but look like my logic not work, why?我想通过路由获取此属性,但看起来我的逻辑不起作用,为什么?
When app just launched it call - setInitialVC()
当应用程序刚刚启动它调用 -
setInitialVC()
Modify the setRootViewControllerWithNavigationControlledEmbeded function like below and try.如下修改 setRootViewControllerWithNavigationControlledEmbeded function 并尝试。
private func setRootViewControllerWithNavigationControlledEmbeded(route: Route,
viewController: UIViewController){
var navC = getCurrentNavC(route)
self.window = UIWindow(frame: UIScreen.main.bounds)
//navC = UINavigationController.init(rootViewController: viewController)
print("auth vc \(authNavigationController)")
print("navC \(navC)")
self.window?.rootViewController = navC
self.window?.makeKeyAndVisible()
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.