自定义导航栏返回按钮--拦截push方法实现
来源:互联网 发布:天刀npc捏脸数据库 编辑:程序博客网 时间:2024/05/17 03:22
- 重写push方法的目的 拦截所有push进来的子控制器
- 监听返回按钮的点击
- 手势识别器对象会调用这个代理方法来决定手势是否有效
应用场景需求:在app中,一般给导航控制器push的子控制器的返回按钮统一设置,而不是用系统的默认返回按钮
分析:
1 自定义返回按钮(UIButton)
2 自定义返回按钮后,系统不会给自定义的按钮添加返回功能,需要手动添加方法,实现返回功能
3 自定义返回按钮后,系统也不会给自定义的按钮添加侧滑功能,原因是侧滑手势识别器代理方法系统取消了
解决方案:
1 设置手势交互识别器的代理
2 遵守代理协议
3 实现代理方法
4 重写push方法的目的 : 拦截所有push进来的子控制器在里面自定义全局的返回按钮
1. 重写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:@"图片名称"] forState:UIControlStateNormal]; [backButton setImage:[UIImage imageNamed:@"图片名称"] 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];}
2. 监听返回按钮的点击
- (void)back{ [self popViewControllerAnimated:YES];}
3. 手势识别器对象会调用这个代理方法来决定手势是否有效
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer{ // 手势何时有效 : 当导航控制器的子控制器个数 > 1就有效 return self.childViewControllers.count > 1;}
0 0
- 自定义导航栏返回按钮--拦截push方法实现
- 自定义导航栏返回按钮
- 自定义导航栏返回按钮
- 自定义导航栏返回按钮
- 自定义导航返回按钮
- 自定义导航栏上的返回按钮
- 自定义导航栏上的返回按钮
- iOS自定义导航栏的返回按钮
- 自定义导航栏返回按钮文字
- iOS 自定义导航栏的返回按钮
- iOS 导航栏自定义返回按钮
- 自定义iOS7导航栏返回按钮文字
- 自定义导航栏的返回按钮
- iOS 导航栏返回按钮自定义
- 自定义导航栏返回按钮点击事件
- Swift自定义导航栏返回按钮
- 自定义导航栏的返回按钮
- 自定义导航条返回按钮
- MathType在手,公式不求人!
- c++第四次上机作业
- c++实验4-分数的累加
- 2016.4.21日正式开始JAVA学习能坚持下去吗
- javascript必知必会之this关键字及scope
- 自定义导航栏返回按钮--拦截push方法实现
- Maven中mybaties-generator配置
- JDK中的URLConnection参数详解
- Python学习(五)——列表操作全透析
- static (msdn about keyword static translation)
- ORACLE数据库事务隔离
- VS 2008 Setup Project Build 出现 ERROR: Could not create the file,发现是Chrome 启服务Software Protection的导致。
- jdk7 tar.gz 安装
- GenericServlet的基本