APP开发之初:自定义NavigationController,拦截所有push方法.
来源:互联网 发布:软件配置管理计划书 编辑:程序博客网 时间:2024/04/29 20:00
一个项目里面会用无数次导航控制器的Push方法,它们一般都有一些共性的地方需要配置.例如”返回按钮”的字体以及触发的事件,tabBar的背景色. 还有每次Push要隐藏的底部工具条…用自定义的NavigationContoller就不必重复上面的代码配置,方便日后维护修改.降低代码复写
#import "XMGNavigationController.h"@interface XMGNavigationController () <UIGestureRecognizerDelegate>@end@implementation XMGNavigationController- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. self.interactivePopGestureRecognizer.delegate = self; [self.navigationBar setBackgroundImage:[UIImage imageNamed:@"navigationbarBackgroundWhite"] forBarMetrics:UIBarMetricsDefault];}/** * 重写push方法的目的 : 拦截所有push进来的子控制器 * * @param viewController 刚刚push进来的子控制器 */- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated{ if (self.childViewControllers.count > 0) { // 如果viewController不是最早push进来的子控制器 // 左上角 UIButton *backButton = [UIButton buttonWithType:UIButtonTypeCustom]; [backButton setImage:[UIImage imageNamed:@"navigationButtonReturn"] forState:UIControlStateNormal]; [backButton setImage:[UIImage imageNamed:@"navigationButtonReturnClick"] forState:UIControlStateHighlighted]; [backButton setTitle:@"返回" forState:UIControlStateNormal]; [backButton setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; [backButton setTitleColor:[UIColor redColor] forState:UIControlStateHighlighted]; [backButton sizeToFit]; // 这句代码放在sizeToFit后面 backButton.contentEdgeInsets = UIEdgeInsetsMake(0, -20, 0, 0); [backButton addTarget:self action:@selector(back) forControlEvents:UIControlEventTouchUpInside]; viewController.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:backButton]; // 隐藏底部的工具条 viewController.hidesBottomBarWhenPushed = YES; } // 所有设置搞定后, 再push控制器 [super pushViewController:viewController animated:animated];}- (void)back{ [self popViewControllerAnimated:YES];}#pragma mark - <UIGestureRecognizerDelegate>/** * 手势识别器对象会调用这个代理方法来决定手势是否有效 * * @return YES : 手势有效, NO : 手势无效 */- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer{ // 手势何时有效 : 当导航控制器的子控制器个数 > 1就有效 return self.childViewControllers.count > 1;}@end
0 0
- APP开发之初:自定义NavigationController,拦截所有push方法.
- NavigationController 自定义pop和push动画
- 自定义导航栏返回按钮--拦截push方法实现
- 自定义NavigationController 的Push 和 Pop过渡动画
- 拦截所有push进来的控制器
- 关于NavigationController push方法卡顿的问题
- Html5 开发列表之push方法
- navigationController随便push
- 自定义 NavigationController
- navigationController 拦截返回事件
- 开发自定义拦截器
- 【iOS学习笔记 15-11-06】简单自定义navigationcontroller push和pop动画效果
- NavigationController push 卡死问题
- javascript 之 push方法
- Android App开发--电话拦截
- Struts2 自定义拦截器(方法拦截器)
- Struts2 自定义拦截器(方法拦截器)
- Struts2 自定义拦截器(方法拦截器)
- 旋转矩阵、四元数和欧拉角之间的转换——Matlab
- android adb源码分析(3)
- C#控制台 console.writeline中占位符的示例
- bash破壳漏洞反弹shell
- 高并发数据结构Disruptor解析(4)
- APP开发之初:自定义NavigationController,拦截所有push方法.
- Glide,Google推荐的图片加载库
- SharePoint 2013 Using PeopleEditor in Custom list or Custom Web Parts
- CentOS 7 关闭 SElinux
- 手把手教你配置苹果APNS推送服务
- Java抽象类
- 题目975 关于521
- 在线web表单设计器
- Java浅尝