Ui

#重写导航栏返回按钮步骤

2016-09-12  本文已影响57人  _Comma

今天突然要重写导航栏返回按钮,就顺便发上来一下,也当自己做笔记,附上详情一份

首先,建立分类,附图

分类.h,代码较少就不贴了

.m,图下面附代码

#import "UIViewController+BackButtonHandler.h"

@implementation UIViewController (BackButtonHandler)

@end

@implementation UINavigationController (ShouldPopOnBackButton)

- (BOOL)navigationBar:(UINavigationBar *)navigationBar shouldPopItem:(UINavigationItem*)item {

if([self.viewControllers count] < [navigationBar.items count]) {

return YES;

}

BOOL shouldPop = YES;

UIViewController* vc = [self topViewController];

if([vc respondsToSelector:@selector(navigationShouldPopOnBackButton)]) {

shouldPop = [vc navigationShouldPopOnBackButton];

}

if(shouldPop) {

dispatch_async(dispatch_get_main_queue(), ^{

[self popViewControllerAnimated:YES];

});

} else {

for(UIView *subview in [navigationBar subviews]) {

if(subview.alpha < 1.) {

[UIView animateWithDuration:.25 animations:^{

subview.alpha = 1.;

}];

}}}return NO;}

最后只需要在重写的控制器里#import "UIViewController+BackButtonHandler.h"

然后在-(BOOL) navigationShouldPopOnBackButton方法里写自己需要的方法就好

本人菜鸟一枚,分享也是在努力学习中,有什么写的不好的希望大家多多指正,谢谢

上一篇 下一篇

猜你喜欢

热点阅读