gpt4 book ai didi

ios - 使用 Storyboard 时如何使用 Typhoon 导航到导航 Controller 中的 Controller

转载 作者:行者123 更新时间:2023-11-29 01:36:16 25 4
gpt4 key购买 nike

在使用 Typhoon 时我遇到了这个问题,但首先是一些背景知识。

  • 我正在使用 Storyboard。
  • Storyboard从主屏幕开始,然后流向登录,然后到主屏幕 (UITabBarController)。我使用导航 Controller 作为根 Controller 。
  • 如果用户已经登录,我想显示主屏幕而不显示主屏幕或登录屏幕。这可以在主屏幕 viewDidLoad 中完成(欢迎其他建议)。

我尝试过的几件事是:

  1. 使用从主页到 tabController 的 segue,但可以看到主屏幕并且过渡是动画的(不希望这样)。

  2. 从 Storyboard 中实例化选项卡 Controller (如下所示),但未注入(inject)依赖项。我理解这是因为没有使用 Typhoon Storyboard。

    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main"bundle:nil];UIViewController *vc1 = [storyboard instantiateViewControllerWithIdentifier:@"MyAuth"];

  3. 我还尝试将带有 Typhoon 的工厂用于 Storyboard。

    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(使用注入(inject)的程序集)推送到导航 Controller ,但它没有 Storyboard上指定的选项卡。

func viewDidLoad() {
super.viewDidLoad()

if(userLoggedIn){
self.navigationController?.pushViewController(self.injectedAssembly.storyboard().tabBarController(), animated: false)
}
}

谢谢,

最佳答案

广告 1. 您可以通过在 Storyboard编辑器中选择 Segue、切换到 Segue 的属性检查器并禁用“动画”复选框来禁用在 Storyboard 中创建的 Segue 上的动画。

ad 2. 如果包含您发布的代码的 UIViewController 是在 Typhoon 注入(inject)的 UIViewController 中实例化的(例如,如果您在主视图 Controller 中有此代码,则使用 plist integration ,并且主视图 Controller 被设置为初始 View Controller ) viewcontroller 在你的storyboard中),然后你可以在UIViewController中访问self.storyboard。该 Storyboard将是 TyphoonStoryboard,因此它可以工作。

ad 3.仅仅因为您向 Typhoon 提供了如何创建 MainStoryboards 和 TabBarViewControllers 的说明,并不意味着 Typhoon 知道它应该将其中之一与另一个结合起来。尝试使用 TyphoonDefinition 提供的 withFactory: 方法之一,使用正确的 Storyboard实例化您的 UIViewController(抱歉使用 Obj-C 而不是 Swift)

- (MYViewController *)myViewController {
return [TyphoonDefinition
withFactory:[self storyboard]
selector:@selector(instantiateViewControllerWithIdentifier:)
parameters:^(TyphoonMethod *factoryMethod) {
[factoryMethod injectParameterWith:@"MYViewControllerIdentifier"];
}
configuration:^(TyphoonFactoryDefinition *definition) {
definition.classOrProtocolForAutoInjection = [MYViewController class];
}];
}

关于ios - 使用 Storyboard 时如何使用 Typhoon 导航到导航 Controller 中的 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32940620/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com