Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/105.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何使用TyphonStoryboard将数据从一个ViewController传递到下一个ViewController?_Ios_Typhoon - Fatal编程技术网

Ios 如何使用TyphonStoryboard将数据从一个ViewController传递到下一个ViewController?

Ios 如何使用TyphonStoryboard将数据从一个ViewController传递到下一个ViewController?,ios,typhoon,Ios,Typhoon,我有一个故事板提供的最简单的应用程序 我们有一个UINavigationController,以及视图控制器a和B A有一个文本字段,用户应该在其中键入自己的姓名。当用户触摸一个按钮时,它会进入B,显示“嗨,[名字]!” 如何使用台风将用户输入的姓名从A传递到B? 对于Typhone,我认为它可以让我避免使用-prepareforsgue:sender:,从DI的角度来看,这是非常有害的,因为它需要在完全不相关的视图控制器之间进行耦合。(例如,viewControllerB.nameToDis

我有一个故事板提供的最简单的应用程序

我们有一个
UINavigationController
,以及视图控制器a和B

A有一个文本字段,用户应该在其中键入自己的姓名。当用户触摸一个按钮时,它会进入B,显示“嗨,[名字]!”

如何使用台风将用户输入的姓名从A传递到B?


对于Typhone,我认为它可以让我避免使用
-prepareforsgue:sender:
,从DI的角度来看,这是非常有害的,因为它需要在完全不相关的视图控制器之间进行耦合。(例如,
viewControllerB.nameToDisplay=self.textField.text;

台风的一个很好的功能是能够将程序集用作工厂接口,混合静态和运行时依赖项,从而避免创建自定义工厂的样板。此功能称为。但是,由于故事板用于发射视图控制器,因此无法使用:

  • 运行时参数,因为故事板接口对此没有概念
  • 初始化器注入,因为从故事板发射的VCs使用
    initWithCoder
您可以做的另一件事是在程序集中使用scope
TyphonScopeWeakSingleton

- (Person *)storyboardModel
{
    return [TyphoonDefinition withClass:[Person class] 
        configuration:^(TyphoonDefinition *definition) {

        definition.scope = TyphoonScopeWeakSingleton;
    }];
}
然后,可以将其注入俯视图控制器以及该堆栈上的任何后续子级。当这个堆栈最终弹出时,模型对象也将被清理


由于序列图像板创建的视图控制器仅适用于属性依赖项,因此您可能希望将此方法与Typhone(仍然是私有的,但在master上可用)的自动布线宏一起使用。这样可以节省创建部件注册和布线规则的时间:

@interface INFWelcomeController : UIViewController <INFWelcomeViewDelegate>

    @property (nonatomic, strong) InjectedClass(Person) model;
    @property (nonatomic, strong) InjectedProtocol(WebClient) client;

@end
@接口INFWelcomeController:UIViewController
@属性(非原子,强)注入类(人)模型;
@属性(非原子、强)InjectedProtocol(WebClient)客户端;
@结束

集成测试用例也将提供自动布线

谢谢你的回答,贾斯珀!我想那会管用的。MVVM可能会使它变得更复杂一点,但我可以看到它是如何解耦ViewModels的。我需要尽快试一试。