@@ -71,8 +71,12 @@ - (void)viewDidLoad {
7171
7272- (void )viewWillAppear : (BOOL )animated {
7373 [super viewWillAppear: animated];
74- // 在这里为什么还需要调用一次,是因为如果把一个界面dismiss后回来这里,此时并不会调用navigationController:willShowViewController,但会调用viewWillAppear
75- [self renderStyleInNavigationController: self currentViewController: self .topViewController];
74+ [self willShowViewController: self .topViewController];
75+ }
76+
77+ - (void )viewDidAppear : (BOOL )animated {
78+ [super viewDidAppear: animated];
79+ [self didShowViewController: self .topViewController];
7680}
7781
7882- (UIViewController *)popViewControllerAnimated : (BOOL )animated {
@@ -255,7 +259,7 @@ - (void)handleInteractivePopGestureRecognizer:(UIScreenEdgePanGestureRecognizer
255259// 注意如果实现了某一个navigationController的delegate方法,必须同时检查并且调用delegateProxy相对应的方法
256260
257261- (void )navigationController : (UINavigationController *)navigationController willShowViewController : (UIViewController *)viewController animated : (BOOL )animated {
258- [self renderStyleInNavigationController: navigationController currentViewController : viewController];
262+ [self willShowViewController : viewController];
259263 if ([self .delegateProxy respondsToSelector: _cmd ]) {
260264 [self .delegateProxy navigationController: navigationController willShowViewController: viewController animated: animated];
261265 }
@@ -264,6 +268,7 @@ - (void)navigationController:(UINavigationController *)navigationController will
264268- (void )navigationController : (UINavigationController *)navigationController didShowViewController : (UIViewController *)viewController animated : (BOOL )animated {
265269 self.viewControllerPopping = nil ;
266270 self.isViewControllerTransiting = NO ;
271+ [self didShowViewController: viewController];
267272 if ([self .delegateProxy respondsToSelector: _cmd ]) {
268273 [self .delegateProxy navigationController: navigationController didShowViewController: viewController animated: animated];
269274 }
@@ -300,3 +305,17 @@ - (UIInterfaceOrientationMask)supportedInterfaceOrientations {
300305}
301306
302307@end
308+
309+
310+ @implementation QMUINavigationController (UISubclassingHooks)
311+
312+ - (void )willShowViewController : (UIViewController *)viewController {
313+ // 子类可以重写
314+ [self renderStyleInNavigationController: self currentViewController: viewController];
315+ }
316+
317+ - (void )didShowViewController : (UIViewController *)viewController {
318+ // 子类可以重写
319+ }
320+
321+ @end
0 commit comments