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

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

首先,建立分类,附图


分类.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方法里写自己需要的方法就好

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容