рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВрдиреЗ рдЙрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреА рдереА рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдо рдХрдИ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рджреГрд╢реНрдп рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЗ рдмреАрдЪ рд░рдЪрдирд╛ рдФрд░ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рди рдкрд░ рдореИрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реВрдВ, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдПрдХ рдЕрд▓рдЧ рдорд╛рд░реНрдЧрдХрдВрдкреЛрдЬрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИред рдореБрдЭреЗ рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдкрд░ рд╕реБрдЦрдж рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдФрд░ рдХреБрдЫ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╕рд▓рд╛рд╣ рдорд┐рд▓реА, рдЬрд┐рд╕рдиреЗ рдореБрдЭреЗ рдПрдХ рдФрд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛, рдЬреЛ рдереЛрдбрд╝рд╛ рдФрд░ рд╕рдордЭрд╛рдПрдЧрд╛ рдХрд┐ рдХреИрд╕реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдХрдЯреМрддреА рдХреЗ рддрд╣рдд, рдореИрдВ рдХреБрдЫ рд╕рдмрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рдиреНрдпрд╛рд╕ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред

рд░рд╛рдЙрдЯрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдХреИрд╕реЗ рдкрд╛рд░реНрд╕ рдХрд░рддрд╛ рд╣реИ
рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдХрд┐ рд░рд╛рдЙрдЯрд░ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦреЗ рдЧрдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдХреИрд╕реЗ рдкрд╛рд░реНрд╕ рдХрд░рддрд╛ рд╣реИред рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рд╕реЗ рдЙрджрд╛рд╣рд░рдг рд▓реЗрдВ:
let productScreen = StepAssembly(finder: ClassFinder(options: [.current, .visible]), factory: ProductViewControllerFactory()) .using(UINavigationController.pushToNavigation()) .from(SingleContainerStep(finder: NilFinder(), factory: NavigationControllerFactory())) .using(GeneralAction.presentModally()) .from(GeneralStep.current()) .assemble()
рд░рд╛рдЙрдЯрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдЪрд░рдгреЛрдВ рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╕реЗ рдЧреБрдЬрд░реЗрдЧрд╛, рдЬрдм рддрдХ рдХрд┐ рдХрд┐рд╕реА рдПрдХ рдЪрд░рдг (рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП Finder
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) рдпрд╣ рд╕реВрдЪрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рдХрд┐ рд╡рд╛рдВрдЫрд┐рдд UIViewController
рдкрд╣рд▓реЗ UIViewController
рд╣реА рд╕реНрдЯреИрдХ рдкрд░ рд╣реИред (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, GeneralStep.current()
рдирд┐рдпрдВрддреНрд░рдХ рд╕реНрдЯреИрдХ рдореЗрдВ рдореМрдЬреВрдж рд░рд╣рдиреЗ рдХреА рдЧрд╛рд░рдВрдЯреА рджреА рдЧрдИ рд╣реИ)ред рдлрд┐рд░ рд░рд╛рдЙрдЯрд░ рд╡рд╛рдкрд╕ рд▓реЗ рдЬрд╛рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрдЧрд╛, рд╕рд╛рде рд╣реА рдЖрд╡рд╢реНрдпрдХ UIViewController
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП UIViewController
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдФрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдПрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрдиреНрд╣реЗрдВ рдПрдХреАрдХреГрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╕рдВрдХрд▓рди рдЪрд░рдг рдкрд░ рднреА рдЯрд╛рдЗрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░, рдЖрдк рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП Fabric
рд╕рд╛рде рдЕрд╕рдВрдЧрдд UITabBarController.addTab
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдВрдЧреЗ (рдЕрд░реНрдерд╛рдд, рдЖрдк NavigationControllerFactory
UITabBarController.addTab
рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП UITabBarController.addTab
рдХрдВрдЯреНрд░реЛрд▓рд░ рдореЗрдВ UITabBarController.addTab
рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рдкрд╛рдПрдВрдЧреЗ)ред
рдпрджрд┐ рдЖрдк рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕реНрдХреНрд░реАрди рдкрд░ рдмрд╕ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд ProductViewController
, рддреЛ рдирд┐рдореНрди рдЪрд░рдгреЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:
ClassFinder
рдХреЛ ProductViewController
рдирд╣реАрдВ рдорд┐рд▓реЗрдЧрд╛ рдФрд░ рд░рд╛рдЙрдЯрд░ рдЖрдЧреЗ рдмрдврд╝ рдЬрд╛рдПрдЧрд╛NilFinder
рдХреЛ рдХрднреА рднреА рдХреБрдЫ рдирд╣реАрдВ рдорд┐рд▓реЗрдЧрд╛ рдФрд░ рд░рд╛рдЙрдЯрд░ рдЖрдЧреЗ рдмрдврд╝ рдЬрд╛рдПрдЧрд╛GeneralStep.current
рд╣рдореЗрд╢рд╛ рд╕реНрдЯреИрдХ рдкрд░ рд╕рдмрд╕реЗ рдКрдкрд░реА UIViewController
рд▓реМрдЯрд╛рдПрдЧрд╛ред- рдкреНрд░рд╛рд░рдВрдн
UIViewController
рдкрд╛рдпрд╛ UIViewController
рд╣реИ, рд░рд╛рдЙрдЯрд░ рд╡рд╛рдкрд╕ рдореБрдбрд╝ рдЬрд╛рдПрдЧрд╛ - `рдиреЗрд╡рд┐рдЧреЗрд╢рдирдХрдВрдЯреНрд░реЛрд▓рд░рдлреИрдХреНрдЯрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ
UINavigationController
рдмрдирд╛рддрд╛ рд╣реИ - рдпрд╣
GeneralAction.presentModally
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ GeneralAction.presentModally
- ProductViewControllerFactory
ProductViewControllerFactory
ProductViewController
ProductViewController ProductViewController
ProductViewControllerFactory
- рдмрдирд╛рдП рдЧрдП
ProductViewController
рдХреЛ UINavigationController
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд┐рдЫрд▓реЗ UINavigationController
рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд░рддрд╛ рд╣реИ - рдиреЗрд╡рд┐рдЧреЗрд╢рди рд╕рдорд╛рдкреНрдд рдХрд░реЗрдВ
NB: рдпрд╣ рд╕рдордЭрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдХреЗ рдЕрдВрджрд░ рдХреБрдЫ UIViewController
рдмрд┐рдирд╛ рдПрдХ UINavigationController
рдорд╛рдореВрд▓реА рд░реВрдк рд╕реЗ рджрд┐рдЦрд╛рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИред рдЗрд╕рд▓рд┐рдП, 5-8 рдЪрд░рдгреЛрдВ рдХреЛ рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рдХреНрд░рдо рдореЗрдВ рд░рд╛рдЙрдЯрд░ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╕реЛрдЪрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╡рд┐рдиреНрдпрд╛рд╕ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рд╡рд░реНрдгрд┐рдд рд╣реИред
рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд▓рд┐рдЦрддреЗ рд╕рдордп рдПрдХ рдЕрдЪреНрдЫрд╛ рдЕрднреНрдпрд╛рд╕ рдпрд╣ рдорд╛рди рд▓реЗрдирд╛ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрд╕ рд╕рдордп рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдХрд╣реАрдВ рднреА рд╕реНрдерд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░, рдЕрдЪрд╛рдирдХ, рдЖрдкрдХреЛ рдкреНрд░рд╛рдкреНрдд рд╕реНрдХреНрд░реАрди рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдиреБрд░реЛрдз рдХреЗ рд╕рд╛рде рдПрдХ рдкреБрд╢ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ рджреЗрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИ - "рдЖрд╡реЗрджрди рдХреИрд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП? ? "," Finder
рдЙрд╕ рд╡рд┐рдиреНрдпрд╛рд╕ рдореЗрдВ рдХреИрд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░реЗрдЧрд╛ рдЬреЛ рдореИрдВ рд╡рд░реНрдгрди рдХрд░ рд░рд╣рд╛ рд╣реВрдВ? "ред рдпрджрд┐ рдЗрди рд╕рднреА рд╕рд╡рд╛рд▓реЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдПрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдорд┐рд▓рддрд╛ рд╣реИ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╡рд╛рдВрдЫрд┐рдд рд╕реНрдХреНрд░реАрди рджрд┐рдЦрд╛рдиреЗ рдХреА рдЧрд╛рд░рдВрдЯреА рджреЗрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рд╡рд╣ рд╣реИред рдФрд░ рдпрд╣ рд╡рд┐рдкрдгрди рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдЯреАрдореЛрдВ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдиреЗ (рдЖрдХрд░реНрд╖рдХ) рд╕реЗ рдЖрдзреБрдирд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
StackIteratingFinder
рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдХрд▓реНрдк:
рдЖрдк Finder
рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЛ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдмрд╕реЗ рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╕реНрдХреНрд░реАрди рдкрд░ рд╡реНрдпреВ рдХрдВрдЯреНрд░реЛрд▓рд░реНрд╕ рдХреЗ рдЧреНрд░рд╛рдл рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рдирд╛ рд╣реИред рдЗрд╕ рд▓рдХреНрд╖реНрдп рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреБрд╕реНрддрдХрд╛рд▓рдп StackIteratingFinder
рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЗрд╕ рдХрд╛рд░реНрдп рдХреЛ рдХрд░реЗрдВрдЧреЗред рдЖрдкрдХреЛ рдмрд╕ рдЗрд╕ рд╕рд╡рд╛рд▓ рдХрд╛ рдЬрд╡рд╛рдм рджреЗрдирд╛ рд╣реИ - рдХреНрдпрд╛ рдпрд╣ UIViewController
рдЬрд┐рд╕рдХреА рдЖрдк рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реИрдВред
StackIteratingFinder
рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рдиреЗ рдФрд░ рдпрд╣ рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдЧреНрд░рд╛рдлрд╝ рдХреЗ рдХрд┐рди рд╣рд┐рд╕реНрд╕реЛрдВ (рд╕реНрдЯреИрдХ) рдореЗрдВ рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдирд┐рдпрдВрддреНрд░рдХ рдЗрд╕реЗ рджреЗрдЦреЗрдВ, рдЖрдк рдЗрд╕реЗ рдмрдирд╛рддреЗ рд╕рдордп SearchOptions
рд╕рдВрдпреЛрдЬрди рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░ рдЙрдиреНрд╣реЗрдВ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:
current
: рд╕реНрдЯреИрдХ рдкрд░ рд╕рдмрд╕реЗ рдКрдкрд░реА рджреГрд╢реНрдп рдирд┐рдпрдВрддреНрд░рдХред (рд╡рд╣ рдЬреЛ UIWindow
рдХрд╛ rootViewController
рдпрд╛ рд╡рд╣ рдЬреЛ рдмрд╣реБрдд рдКрдкрд░ рд╕реЗ rootViewController
рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ)visible
: рдпрджрд┐ UIViewController
рдПрдХ рдХрдВрдЯреЗрдирд░ рд╣реИ, рддреЛ рдЗрд╕рдХреЗ рджреГрд╢реНрдп UIViewController
рдЖрд╣ рдореЗрдВ рджреЗрдЦреЗрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП: UINavigationController
рд╣рдореЗрд╢рд╛ рдПрдХ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд╡рд╛рд▓рд╛ UIViewController
, UISplitController
рдПрдХ рдпрд╛ рджреЛ рд╣реИ рдпрд╣ рдХреИрд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЗрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред)contained
: рдЗрд╕ рдШрдЯрдирд╛ рдореЗрдВ рдХрд┐ UIViewController
рдПрдХ рдХрдВрдЯреЗрдирд░ рд╣реИ, рдЕрдкрдиреЗ рд╕рднреА рдиреЗрд╕реНрдЯреЗрдб UIViewController
рдореЗрдВ рдЦреЛрдЬ рдХрд░реЗрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП: рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд╡рд╛рд▓реЗ рд╕рд╣рд┐рдд UINavigationController
рд╕рднреА рджреГрд╢реНрдп рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рдПрдВ)presenting
: UIViewController
рддрд╣рдд рд╕рднреА UIViewController
рдЖрд╣ рдореЗрдВ рдЦреЛрдЬреЗрдВ (рдпрджрд┐ рд╡рд╣рд╛рдБ рдкрд╛рдареНрдпрдХреНрд░рдо рдХреЗ рд╣реИрдВ)presented
: рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдП рдЧрдП рдХреЗ рд▓рд┐рдП UIViewController
рдЦреЛрдЬреЗрдВ ( StackIteratingFinder
рдпрд╣ рд╡рд┐рдХрд▓реНрдк рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╣рдореЗрд╢рд╛ рдКрдкрд░ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ)
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЖрдВрдХрдбрд╝рд╛ рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рдКрдкрд░ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

рдореИрдВ рдПрдХ рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рд╕реЗ рдЦреБрдж рдХреЛ рдкрд░рд┐рдЪрд┐рдд рдХрд░рдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред
рдЙрджрд╛рд╣рд░рдг рдпрджрд┐ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХрд╛ Finder
рд╕рдВрдкреВрд░реНрдг рд╕реНрдЯреИрдХ рдореЗрдВ рдПрдХ AccountViewController
рдХреА рддрд▓рд╛рд╢ рдХрд░реЗ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рджреГрд╢реНрдпрдорд╛рди UIViewController
s рдХреЗ рдмреАрдЪ, рддреЛ рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд▓рд┐рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:
ClassFinder<AccountViewController, Any?>(options: [.current, .visible, .presenting])
NB рдпрджрд┐ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рд╕реЗрдЯрд┐рдВрдЧ рдХреБрдЫ рдХрдо рд╣реЛрдЧреА - рддреЛ рдЖрдк рд╣рдореЗрд╢рд╛ Finder
рдП рдХреЗ рдЕрдкрдиреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рд╣реЛрдЧрд╛ред
рдЪрд▓рд┐рдП, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдПред
рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЗ рд╕рд╛рде рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рдЙрджрд╛рд╣рд░рдг
рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд UIViewController
, рдЬреЛ рдХрд┐ UIWindow
рдХрд╛ rootViewController
, рдФрд░ рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕реЗ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдХреЗ рдЕрдВрдд рдореЗрдВ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд HomeViewController
рд╕рд╛рде рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рдП:
let screen = StepAssembly( finder: ClassFinder<HomeViewController, Any?>(), factory: XibFactory()) .using(GeneralAction.replaceRoot()) .from(GeneralStep.root()) .assemble()
XibFactory
HomeViewController
рдХреА xib рдлрд╝рд╛рдЗрд▓ рд╕реЗ HomeViewController.xib
рд▓реЛрдб XibFactory
рдпрд╣ рдордд рднреВрд▓реЛ рдХрд┐ рдпрджрд┐ рдЖрдк рд╕рдВрдпреЛрдЬрди рдореЗрдВ Finder
рдФрд░ Factory
рдЕрдореВрд░реНрдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдХрдо рд╕реЗ рдХрдо рдПрдХ рд╕рдВрд╕реНрдерд╛ рдХреЗ рд▓рд┐рдП UIViewController
рдФрд░ рд╕рдВрджрд░реНрдн рдХрд╛ рдкреНрд░рдХрд╛рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ - ClassFinder<HomeViewController, Any?>
рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ, рдЕрдЧрд░ рдКрдкрд░ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдореИрдВ GeneralStep.root
рдХреЛ GeneralStep.current
рдмрджрд▓ GeneralStep.current
?
рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЙрд╕ рд╕рдордп рддрдХ рдХрд╛рдо рдХрд░реЗрдЧрд╛ рдЬрдм рддрдХ рдпрд╣ рдЙрд╕ рд╕рдордп рдирд╣реАрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рд╕реНрдХреНрд░реАрди рдкрд░ рдХреЛрдИ рднреА рдореЛрдбрд▓ UIViewController
ред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, GeneralAction.replaceRoot
рд░реВрдЯ рдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХреЗ рдКрдкрд░ рдПрдХ рдореЛрдбрд▓ рдирд┐рдпрдВрддреНрд░рдХ рд╣реИ, рдФрд░ рд░рд╛рдЙрдЯрд░ рдПрдХ рддреНрд░реБрдЯрд┐ рдХреА рд╕реВрдЪрдирд╛ рджреЗрдЧрд╛ред рдпрджрд┐ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░реЗ, рддреЛ рдЖрдкрдХреЛ рд░рд╛рдЙрдЯрд░ рдХреЛ рдпрд╣ рд╕рдордЭрд╛рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рдХрд┐ рдЖрдк GeneralAction.replaceRoot
рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд░реВрдЯ UIViewController
рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдлрд┐рд░ рд░рд╛рдЙрдЯрд░ рд╕рднреА рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд┐рдП рдЧрдП UIViewController
рдХреЛ рд╣рдЯрд╛ рджреЗрдЧрд╛ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд┐рд╕реА рднреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред
рдореИрдВ рдХреБрдЫ AccountViewController
рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдЕрдЧрд░ рдпрд╣ рдЕрднреА рднреА рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдХрд┐рд╕реА рднреА UINavigationController
рдЕрдВрджрд░ рдФрд░ рдЬреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХрд╣реАрдВ рди рдХрд╣реАрдВ рд╕реНрдХреНрд░реАрди рдкрд░ рд╣реИ (рднрд▓реЗ рд╣реА рдпрд╣ UINavigationController
рдХреБрдЫ modal UIViewController
рддрд╣рдд рд╣реЛ:
let screen = StepAssembly( finder: ClassFinder<AccountViewController, Any?>(), factory: XibFactory()) .using(UINavigationController.pushToNavigation()) .from(SingleStep(ClassFinder<UINavigationController, Any?>(), NilFactory())) .from(GeneralStep.current()) .assemble()
рдЗрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ NilFactory
рдХреНрдпрд╛ рдЕрд░реНрде рд╣реИ? рдЗрд╕рдХреЗ рджреНрд╡рд╛рд░рд╛, рдЖрдк рд░рд╛рдЙрдЯрд░ рдХреЛ рдмрддрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдпрджрд┐ рд╡рд╣ рд╕реНрдХреНрд░реАрди рдкрд░ рдХреЛрдИ UINavigationController
рдирд╣реАрдВ рдвреВрдВрдв рдкрд╛рдпрд╛, рддреЛ рдЖрдк рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рдХрд┐ рд╡рд╣ рдЗрд╕реЗ рдмрдирд╛рдП рдФрд░ рд╕рд┐рд░реНрдл рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдХреБрдЫ рди рдХрд░реЗред рд╡реИрд╕реЗ, рдЪреВрдВрдХрд┐ рдпрд╣ NilFactory
, рдЖрдк рдЗрд╕рдХреЗ рдмрд╛рдж Action
рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред
рдореИрдВ рдХреБрдЫ AccountViewController
рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдЕрдЧрд░ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдирд╣реАрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдХрд┐рд╕реА рднреА UINavigationController
рдЕрдВрджрд░ рдФрд░ рдЬреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╕реНрдХреНрд░реАрди рдкрд░ рдХрд╣реАрдВ рд╣реИ, рдФрд░ рдЕрдЧрд░ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдмрдирд╛рдПрдВ рдФрд░ рдЗрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рджрд┐рдЦрд╛рдПрдВ:
let screen = StepAssembly( finder: ClassFinder<AccountViewController, Any?>(), factory: XibFactory()) .using(UINavigationController.PushToNavigation()) .from(SwitchAssembly<UINavigationController, Any?>() .addCase(expecting: ClassFinder<UINavigationController, Any?>(options: .visible))
рдореИрдВ UITabBarController
рдХреЛ UITabBarController
рд╕рд╛рде рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬрд┐рд╕рдореЗрдВ HomeViewController
рдФрд░ HomeViewController
рдХреЛ рд╡рд░реНрддрдорд╛рди рд░реВрдЯ рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣реИ:
let tabScreen = SingleContainerStep( finder: ClassFinder(), factory: CompleteFactoryAssembly(factory: TabBarControllerFactory()) .with(XibFactory<HomeViewController, Any?>(), using: UITabBarController.addTab()) .with(XibFactory<AccountViewController, Any?>(), using: UITabBarController.addTab()) .assemble()) .using(GeneralAction.replaceRoot()) .from(GeneralStep.root()) .assemble()
рдХреНрдпрд╛ рдореИрдВ GeneralAction.presentModally
рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рд╕рд╛рде рдХрд╕реНрдЯрдо UIViewControllerTransitioningDelegate
рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ:
let transitionController = CustomViewControllerTransitioningDelegate()
рдореИрдВ AccountViewController
рдЬрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдЬрд╣рд╛рдВ рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдЯреИрдм рдореЗрдВ рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рдореЛрдбрд▓ рд╡рд┐рдВрдбреЛ рдореЗрдВ рднреА рд╣реИ:
let screen = StepAssembly( finder: ClassFinder<AccountViewController, Any?>(), factory: NilFactory()) .from(tabScreen) .assemble()
рд╣рдо NilFactory
рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдХрд░ рд░рд╣реЗ NilFactory
? рдЕрдЧрд░ рдпрд╣ рдирд╣реАрдВ рдкрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рд╣рдореЗрдВ рдПрдХ AccountViewController
рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣ tabScreen
рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЙрд╕реЗ рдКрдкрд░ рджреЗрдЦреЗрдВред
рдореИрдВ ForgotPasswordViewController
рд░реВрдк рд╕реЗ ForgotPasswordViewController
рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ ForgotPasswordViewController
, рд▓реЗрдХрд┐рди, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, LoginViewController
рдЕрдВрджрд░ LoginViewController
рдмрд╛рдж:
let loginScreen = StepAssembly( finder: ClassFinder<LoginViewController, Any?>(), factory: XibFactory()) .using(UINavigationController.pushToNavigation()) .from(NavigationControllerStep()) .using(GeneralAction.presentModally()) .from(GeneralStep.current()) .assemble() let forgotPasswordScreen = StepAssembly( finder: ClassFinder<ForgotPasswordViewController, Any?>(), factory: XibFactory()) .using(UINavigationController.pushToNavigation()) .from(loginScreen.expectingContainer()) .assemble()
рдЖрдк рдиреЗрд╡рд┐рдЧреЗрд╢рди рдореЗрдВ ForgotPasswordViewController
рдФрд░ LoginViewController
ForgotPasswordViewController
рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ expectingContainer
рдХреНрдпреЛрдВ expectingContainer
рд░рд╣реА рд╣реИ?
рдЪреВрдБрдХрд┐ pushToNavigation
рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП UINavigationController
рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдмрд╛рдж рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ, expectingContainer
рд╣реИ рдХрд┐ рд╣рдореЗрдВ рд╡рд┐рдзрд┐ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдХреЗ рдПрдХ рд╕рдВрдХрд▓рди рддреНрд░реБрдЯрд┐ рд╕реЗ рдмрдЪрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ рдХрд┐ рд╣рдо рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ рдЬрдм рд░рд╛рдЙрдЯрд░ loginScreen
рдореЗрдВ loginScreen
рдкрд╣реБрдВрдЪрддрд╛ loginScreen
, рддреЛ UINavigationController
рд╣реЛрдЧрд╛ред
рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдКрдкрд░ рд╡рд┐рдиреНрдпрд╛рд╕ рдореЗрдВ рдореИрдВ GeneralStep.current
рдХреЛ GeneralStep.root
рдмрджрд▓ GeneralStep.root
?
рдпрд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рдЬрдм рд╕реЗ рдЖрдк рд░рд╛рдЙрдЯрд░ рдХреЛ рдмрддрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рд░реВрдЯ UIViewController
рд╕реЗ рдПрдХ рдЪреЗрди рдмрдирд╛рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗ, рдЕрдЧрд░ рдЗрд╕рдХреЗ рдКрдкрд░ рдХреЛрдИ рдореЛрдбрд▓ UIViewController
рдЦреБрд▓рддрд╛ рд╣реИ, рддреЛ рд░рд╛рдЙрдЯрд░ рдЖрдкрдХреЛ рдЪреЗрди рдмрдирд╛рдирд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЫрд┐рдкрд╛ рджреЗрдЧрд╛ред
рдореЗрд░реЗ рдЖрд╡реЗрджрди рдореЗрдВ рдЯреИрдм рдХреЗ рд░реВрдк рдореЗрдВ HomeViewController
рдФрд░ BagViewController
рдпреБрдХреНрдд UITabBarController
ред рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣ рдЯреИрдм рдкрд░ рдЖрдЗрдХрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрдирдХреЗ рдмреАрдЪ рд╕реНрд╡рд┐рдЪ рдХрд░ рд╕рдХреЗрдВред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдореИрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рд░реВрдк рд╕реЗ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реВрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ HomeViewController
рдЕрдВрджрд░ "Go to Bag" рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддрд╛ рд╣реИ), рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЯреИрдм рд╕реНрд╡рд┐рдЪ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди BagViewController
рдХреЛ BagViewController
рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ 3 рддрд░реАрдХреЗ рд╣реИрдВ:
StackIteratingFinder
рдХреЛ рдХреЗрд╡рд▓ [.current, .vouble] рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рджреГрд╢реНрдпрдорд╛рди рд▓реЛрдЧреЛрдВ рдореЗрдВ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХрд░реЗрдВредNilFinder
рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд░рд╛рдЙрдЯрд░ рдХреЛ BagViewController
рдореЗрдВ BagViewController рдХрднреА рдирд╣реАрдВ рдорд┐рд▓реЗрдЧрд╛ рдФрд░ рд╣рдореЗрд╢рд╛ рдЗрд╕реЗ рдмрдирд╛рдПрдЧрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдПрдХ рд╕рд╛рдЗрдб рдЗрдлреЗрдХреНрдЯ рд╣реИ - рдЕрдЧрд░, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, BagViewController
рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ BagViewController
рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд▓рд┐рдВрдХ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ BagViewController
рдЙрд╕реЗ рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рддреЛ рд░рд╛рдЙрдЯрд░ рдЗрд╕реЗ рдирд╣реАрдВ BagViewController
рдФрд░ рджреВрд╕рд░рд╛ рдЙрджрд╛рд╣рд░рдг BagViewController
рдЗрд╕рдХреЗ рдКрдкрд░ рджрд┐рдЦрд╛рдПрдЧрд╛ред рдореЛрдбрд▓ред рдпрд╣ рд╡рд╣ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рдЬреЛ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВред- рдереЛрдбрд╝рд╛
ClassFinder
рдмрджрд▓реЗрдВ рддрд╛рдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ BagViewController
рдХреЛ BagViewController
рджрд┐рдЦрд╛рдП рдФрд░ рдмрд╛рдХреА рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░ BagViewController
, рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХреЗред
struct ModalBagFinder: StackIteratingFinder { func isTarget(_ viewController: BagViewController, with context: Any?) -> Bool { return viewController.presentingViewController != nil } } let screen = StepAssembly( finder: ModalBagFinder(), factory: XibFactory()) .using(UINavigationController.pushToNavigation()) .from(NavigationControllerStep()) .using(GeneralAction.presentModally()) .from(GeneralStep.current()) .assemble()
рдПрдХ рдирд┐рд╖реНрдХрд░реНрд╖ рдХреЗ рдмрдЬрд╛рдп
рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд░рд╛рдЙрдЯрд░ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреБрдЫ рд╣рдж рддрдХ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЧрдП рд╣реИрдВред рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдХрд╣рд╛, рд╣рдо 3 рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЕрднреА рддрдХ рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдХрд╛ рд╕рд╛рдордирд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдпрд╣ рдкрд░реНрдпрд╛рдкреНрдд рд▓рдЪреАрд▓рд╛ рдирд╣реАрдВ рд╣реИред рдкреБрд╕реНрддрдХрд╛рд▓рдп, рд╕рд╛рде рд╣реА рд╕рд╛рде рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рд░рд╛рдЙрдЯрд░ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди, рд░рдирдЯрд╛рдЗрдо рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рднреА рдЙрджреНрджреЗрд╢реНрдп рдЪрд╛рд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рднреА рдХреЛрдХреЛ рдЯрдЪ рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддрд╛ рд╣реИ, рдХреЗрд╡рд▓ рд░рдЪрдирд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЪрд░рдгреЛрдВ рдореЗрдВ рддреЛрдбрд╝рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рджрд┐рдП рдЧрдП рдЕрдиреБрдХреНрд░рдо рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ iOS 9 рд╕реЗ 12. рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред , рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЙрди рд╕рднреА рд╡рд╛рд╕реНрддреБрд╢рд┐рд▓реНрдк рдкреИрдЯрд░реНрди рдореЗрдВ рдлрд┐рдЯ рдмреИрдарддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ UIViewController
рд╕реНрдЯреИрдХ (MVC, MVVM, VIP, RIB, VIPER, рдЖрджрд┐) рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред
рдореБрдЭреЗ рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдФрд░ рд╕реБрдЭрд╛рд╡реЛрдВ рдХреЗ рд▓рд┐рдП рдЦреБрд╢реА рд╣реЛрдЧреАред рдЦрд╛рд╕рдХрд░ рдЕрдЧрд░ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рдкрд╣рд▓реБрдУрдВ рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЙрдЪрд┐рдд рд╣реИред рд╢рд╛рдпрдж рд╕рдВрджрд░реНрднреЛрдВ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЛ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред