44
55#import " GDDViewControllerTransition.h"
66#import < objc/runtime.h>
7- #import " GDCMessageHandler.h"
87
98// The address of this variable is used as a key for obj_getAssociatedObject.
109static const char kPresenterKey = 0 ;
@@ -36,7 +35,7 @@ @implementation GDDViewControllerTransition {
3635
3736- (id <GDDTransitionBuilder> (^)(Class viewControllerClass))to {
3837 return ^id <GDDTransitionBuilder>(Class viewControllerClass) {
39- _viewController = [viewControllerClass instancesRespondToSelector: @selector ( initWithPayload: )] ? [[viewControllerClass alloc ] initWithPayload: _data] : [ [viewControllerClass alloc ] init ];
38+ _viewController = [[viewControllerClass alloc ] init ];
4039 return self;
4140 };
4241}
@@ -152,10 +151,6 @@ - (void)displayAndRefresh {
152151
153152 if (!shouldPush) {
154153 // 动画: 仅在 present 时有效
155- // if (viewOptions.transition) {
156- // controller.transitioningDelegate = viewOptions.transition;
157- // controller.modalPresentationStyle = UIModalPresentationCustom;
158- // }
159154 controller.modalTransitionStyle = _viewOption.modalTransitionStyle ;
160155 controller.modalPresentationStyle = _viewOption.modalPresentationStyle ;
161156 }
@@ -168,14 +163,14 @@ - (void)displayAndRefresh {
168163 if (!controller.isViewLoaded ) {
169164 [controller view ]; // force viewDidLoad to be called
170165 }
171- [presenter update: ( id <GDDView>) controller withData: _data];
166+ [presenter update: controller withData: _data];
172167 });
173168 return ;
174169 }
175170
176171 [self config: YES ]; // 某些 ViewOption 需要在 present 之前设置才会生效
177172 [top presentViewController: _stackMode == PRESENT ? controller : [[UINavigationController alloc ] initWithRootViewController: controller] animated: YES completion: ^{
178- [presenter update: ( id <GDDView>) controller withData: _data];
173+ [presenter update: controller withData: _data];
179174 }];
180175 [self config: NO ];
181176}
@@ -209,9 +204,6 @@ - (void)config:(BOOL)eagerly {
209204 if (toolBar != GDPBBool_Default && GDPBBool_IsValidValue (toolBar)) {
210205 [controller.navigationController setToolbarHidden: toolBar == GDPBBool_False animated: NO ];
211206 }
212- // if (options[optionStatusBarOrientation]) {
213- // [[UIApplication sharedApplication] setStatusBarOrientation:(UIInterfaceOrientation) [options[optionStatusBarOrientation] integerValue]];
214- // }
215207 if (viewOption.deviceOrientation ) {
216208 viewOption.deviceOrientation = UIDeviceOrientationUnknown;
217209 [[UIDevice currentDevice ] setValue: @(viewOption.deviceOrientation) forKey: @" orientation" ];
@@ -251,7 +243,7 @@ + (void)replaceRootViewController:(UIViewController *)controller {
251243 if (rootViewController.presentedViewController ) { // 避免内存泄漏, 以释放 rootViewController 和 rootViewController.presentedViewController
252244 [rootViewController dismissViewControllerAnimated: YES completion: nil ];
253245 }
254- UIApplication.sharedApplication .keyWindow . rootViewController = controller;
246+ UIApplication.sharedApplication .delegate . window . rootViewController = controller; // keyWindow 在 makeKeyAndVisible 执行前为nil
255247}
256248
257249+ (UIViewController *)findViewController : (Class )viewControllerClass {
0 commit comments