【发布时间】:2016-01-01 15:19:30
【问题描述】:
在使用 Typhoon 时,我遇到了这个问题,但首先是一些背景知识。
- 我正在使用情节提要。
- 故事板从主屏幕开始,然后流向登录,然后流向主屏幕 (UITabBarController)。我使用导航控制器作为根控制器。
- 如果用户已经登录,我想显示主屏幕而不显示主屏幕或登录屏幕。这可以在主屏幕
viewDidLoad中完成(欢迎提出其他建议)。
我尝试过的几件事是:
使用从 home 到 tabController 的 segue,但可以看到主屏幕并且过渡是动画的(不希望这样)。
-
从情节提要中实例化选项卡控制器(如下所示),但未注入依赖项。我知道这是因为没有使用 Typhoon 故事板。
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; UIViewController *vc1 = [storyboard instantiateViewControllerWithIdentifier:@"MyAuth"];
-
我还尝试使用带有 Typhoon 的工厂作为情节提要。
public dynamic func storyboard() -> AnyObject { return TyphoonDefinition.withClass(TyphoonStoryboard.self){ (definition) in definition.useInitializer("storyboardWithName:factory:bundle:"){ (initializer) in initializer.injectParameterWith("Main") initializer.injectParameterWith(self) initializer.injectParameterWith( NSBundle.mainBundle() ) } definition.scope = TyphoonScope.Singleton; //Let's make this a singleton } } ///Injection for tabbar controller public dynamic func tabBarViewController() -> AnyObject { return TyphoonDefinition.withClass(TabBarViewController.self){ (definition) in } }
在viewDidLoad 上,我将 tabBarViewController(使用注入的程序集)推送到导航控制器,但它没有情节提要上指定的选项卡。
func viewDidLoad() {
super.viewDidLoad()
if(userLoggedIn){
self.navigationController?.pushViewController(self.injectedAssembly.storyboard().tabBarController(), animated: false)
}
}
谢谢,
【问题讨论】:
标签: ios objective-c swift typhoon