@implementationAssemblingFactory+(UIViewController*)assembleChatroomView{ChatroomViewController*viewController=[[UIStoryboardgenericStoryboard]instantiateViewControllerWithIdentifier:ChatroomViewIdentifier];HumanComputerCommunicatePresenter*presenter=[HumanComputerCommunicatePresenternew];AIRobotInteractor*interactor=[AIRobotInteractornew];viewController.presenter=presenter;presenter.progressView=viewController;presneter.messageBoard=viewControllerpresenter.interactor=interactor;interactor.delegate=presenter;returnviewController;}@end@implementationWireframe+(void)moveToNextPageOfViewController:(UIViewController*)viewControllermessenger:(PageMessenger*)messenger{SELselector=[selfselectorOfClass:[viewControllerclass]messengerName:[messengername]];IMPimp=[[selfclass]methodForSelector:selector];void(*func)(id,SEL,UIViewController*,NSDictionary*)=(void*)imp;func([selfclass],selector,viewController,[messengerparams]);}+(SEL)selectorOfClass:(Class)classmessengerName:(NSString*)messengerName{staticNSDictionary*selectorMap=nil;if(!selectorMap){selectorMap=@{@"SplashViewControllerDefault":[NSValuevalueWithPointer:@selector(moveToChatroomViewController:params:)]// add more nav configuration here...};}NSValue*value=[selectorMapvalueForKey:[[classdescription]conj:messengerName]];returnvalue?[valuepointerValue]:@selector(emptyMove:params:);}+(void)moveToChatroomViewController:(UIViewController*)viewControllerparams:(NSDictionary*)params{UIViewController*viewController=[AssemblingFactoryassembleChatroomView];[(BaseViewController*)viewControllersetParams:params];// I defined a base view controller to allow pass params[viewController.navigationControllerpushViewController:viewControlleranimated:YES];}@end