首页 > 代码库 > UINavigationController便于pop的category
UINavigationController便于pop的category
UINavigationController便于pop的category
效果图:
这个category是为了方便UINavigationController用于跳转到指定的控制器当中,用于跳级,如果pop的控制器不存在,会直接提示:
category源码:
UINavigationController+POP.h 与 UINavigationController+POP.m
//// UINavigationController+POP.h// YouXianMing//// Created by YouXianMing on 14-9-20.// Copyright (c) 2014年 YouXianMing. All rights reserved.//#import <UIKit/UIKit.h>@interface UINavigationController (POP)- (NSArray *)popToViewControllerClass:(Class)viewControllerClass animated:(BOOL)animated;@end
//// UINavigationController+POP.m// YouXianMing//// Created by YouXianMing on 14-9-20.// Copyright (c) 2014年 YouXianMing. All rights reserved.//#import "UINavigationController+POP.h"@implementation UINavigationController (POP)- (NSArray *)popToViewControllerClass:(Class)viewControllerClass animated:(BOOL)animated{ UIViewController *controller = nil;
for (UIViewController *oneController in self.viewControllers) {
if ([oneController isMemberOfClass:viewControllerClass]) {
controller = oneController;
break;
}
}
if (controller == nil) { NSLog(@"%s:%s:%d 要pop的控制器指针为空", __FILE__, __func__, __LINE__); return nil; } return [self popToViewController:controller animated:animated];}@end
源码:
RootViewController.m
//// RootViewController.m// YouXianMing//// Created by YouXianMing on 14-9-20.// Copyright (c) 2014年 YouXianMing. All rights reserved.//#import "RootViewController.h"#import "SecondViewController.h"@interface RootViewController ()@end@implementation RootViewController- (void)viewDidLoad{ [super viewDidLoad]; // 设置导航栏样式以及标题以及view的背景色 [self titleTextAttributes:[self createTitleTextAttributes:[UIColor redColor]]]; self.title = @"First ViewController"; self.view.backgroundColor = [UIColor whiteColor]; // 添加手势 UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapEvent)]; [self.view addGestureRecognizer:tap];}- (void)tapEvent{ [self.navigationController pushViewController:[SecondViewController new] animated:YES];}- (NCTitleAttribute *)createTitleTextAttributes:(UIColor *)color{ NCTitleAttribute *titleAttribute = [NCTitleAttribute new]; titleAttribute.titleFont = [UIFont fontWithName:@"HelveticaNeue-Thin" size:20.f]; titleAttribute.titleColor = color; return titleAttribute;}@end
SecondViewController.m
//// SecondViewController.m// YouXianMing//// Created by YouXianMing on 14-9-20.// Copyright (c) 2014年 YouXianMing. All rights reserved.//#import "SecondViewController.h"#import "ThirdViewController.h"@interface SecondViewController ()@end@implementation SecondViewController- (void)viewDidLoad{ [super viewDidLoad]; // 设置导航栏样式以及标题 [self titleTextAttributes:[self createTitleTextAttributes:[UIColor redColor]]]; self.title = @"Second ViewController"; self.view.backgroundColor = [UIColor redColor]; // 添加手势 UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapEvent)]; [self.view addGestureRecognizer:tap];}- (void)tapEvent{ [self.navigationController pushViewController:[ThirdViewController new] animated:YES];}- (NCTitleAttribute *)createTitleTextAttributes:(UIColor *)color{ NCTitleAttribute *titleAttribute = [NCTitleAttribute new]; titleAttribute.titleFont = [UIFont fontWithName:@"HelveticaNeue-Thin" size:20.f]; titleAttribute.titleColor = color; return titleAttribute;}@end
ThirdViewController.m
//// ThirdViewController.m// YouXianMing//// Created by YouXianMing on 14-9-20.// Copyright (c) 2014年 YouXianMing. All rights reserved.//#import "ThirdViewController.h"#import "RootViewController.h"@interface ThirdViewController ()@end@implementation ThirdViewController- (void)viewDidLoad{ [super viewDidLoad]; // 设置导航栏样式以及标题 [self titleTextAttributes:[self createTitleTextAttributes:[UIColor redColor]]]; self.title = @"Third ViewController"; self.view.backgroundColor = [UIColor cyanColor]; // 添加手势 UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapEvent)]; [self.view addGestureRecognizer:tap];}- (void)tapEvent{ [self.navigationController popToViewControllerClass:[RootViewController class] animated:YES];}- (NCTitleAttribute *)createTitleTextAttributes:(UIColor *)color{ NCTitleAttribute *titleAttribute = [NCTitleAttribute new]; titleAttribute.titleFont = [UIFont fontWithName:@"HelveticaNeue-Thin" size:20.f]; titleAttribute.titleColor = color; return titleAttribute;}@end
需要注意的一些地方:
UINavigationController便于pop的category
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。