文档章节

统一添加导航控制器右滑返回手势

cobish
 cobish
发布于 2014/04/22 21:37
字数 389
阅读 3952
收藏 2
点赞 1
评论 0

一、新建一个控制器,继承UINavigationController

    


二、右滑手势代码

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    // 添加右滑手势
    [self addSwipeRecognizer];
}

#pragma mark 添加右滑手势
- (void)addSwipeRecognizer
{
    // 初始化手势并添加执行方法
    UISwipeGestureRecognizer *swipeRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(return)];
    
    // 手势方向
    swipeRecognizer.direction = UISwipeGestureRecognizerDirectionRight;
    
    // 响应的手指数
    swipeRecognizer.numberOfTouchesRequired = 1;
    
    // 添加手势
    [[self view] addGestureRecognizer:swipeRecognizer];
}

#pragma mark 返回上一级
- (void)return
{
    // 最低控制器无需返回
    if (self.viewControllers.count <= 1) return;
    
    // pop返回上一级
    [self popToRootViewControllerAnimated:YES];
}


三、然后只要在AppDelegate中将自定义的导航控制器设置为根控制器

#import "AppDelegate.h"
#import "MainViewController.h"
#import "FirstViewController.h"

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

    // 初始化一个控制器
    FirstViewController *first = [[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil];
    
    // 初始化自定义的导航控制器
    MainViewController *main = [[MainViewController alloc] initWithRootViewController:first];
    
    // 把自定义的导航控制器设置为根控制器
    self.window.rootViewController = main;
    
    self.window.backgroundColor = [UIColor whiteColor];
    [self.window makeKeyAndVisible];
    return YES;
}


四、统一成一个导航控制器可以统一一些东西

    1、统一导航栏样式

self.navigationBar.barTintColor = [UIColor whiteColor];

    2、若在控制器之间跳转时需要做一些事情,可在自定义的控制器里添加下面两个方法

#pragma mark push方法
- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated
{
    // do something you want
    ...
    
    [super pushViewController:viewController animated:animated];
}

#pragma mark pop方法
- (UIViewController *)popViewControllerAnimated:(BOOL)animated
{
    // 比如停止网络请求
    ...
    
    return [super popViewControllerAnimated:animated];
}




© 著作权归作者所有

共有 人打赏支持
cobish
粉丝 33
博文 150
码字总数 45747
作品 0
深圳
论坛源码推荐(4月28日):列表项目的波浪效果 兼容iOS 6与iOS 7的自定义导航条

Flow 基于手势的教程框架,以用户熟悉的手势来驱动用户界面。灵感来自于Facebook Paper。 测试环境:Xcode 5.0,iOS 4.3以上 AMWaveTransition 带有表格的视图控制器切换效果,点击每个栏目会...

mingxun ⋅ 2014/04/29 ⋅ 0

侧滑后返回导航条变小

手势右滑显示左侧菜单,点击左侧菜单按钮push到下一个控制器,返回后还是显示手势右滑时候的界面,此时手势右滑页面的导航条变短了,请问大神这是什么问题,怎么解决? 第一张图是没侧滑显示...

t_fancy ⋅ 2016/04/01 ⋅ 0

iOS 隐藏导航栏加全屏右滑手势

iOS开发过程中 经常能遇见单个页面需要将导航栏隐藏的需求,运用系统的方法隐藏功能虽然也能实现,但使用返回手势时总感觉让人有些别扭,举个反例 反例.gif 明显的返回时的动画效果极差,而且...

Mikebanana ⋅ 2016/10/13 ⋅ 0

全新的手势,侧滑返回、全局右滑返回都OUT啦!

前言 Android快速开发框架-ZBLibrary 最近将以前的全局右滑返回手势改成了 底部左右滑动手势。 为什么呢?为了解决滑动返回手势的问题。 目前有3种滑动返回手势 一、侧滑返回 代表app: 微信...

孤独的探索号 ⋅ 2016/06/12 ⋅ 1

iOS开发:点击系统的返回按钮,返回到指定的视图

iOS开发:点击系统的返回按钮,返回到指定的视图 字数679 阅读2500 评论15 喜欢18 举个栗子:我们在开发中,有时会遇到这样的情况,有A、B、C三个视图控制器,A中有一个按钮,点击按钮push到...

Youth_关旋 ⋅ 2016/10/12 ⋅ 0

iOS体验性优化---RTL适配右滑返回

[TOC] 简述 iOS的导航支持左滑手势返回上一个界面,这是果粉普遍喜欢的一个特性,iOS7之后的APP适配大多会保留这一特性,慢慢的大多用户已经有了这种操作习惯,对于iPhone的无虚拟键,这种操...

苛求帅 ⋅ 2017/12/31 ⋅ 0

[转]iOS开发之自定义导航栏返回按钮右滑返回手势失效的解决

当我们使用代码或者用storyboard来创建一个新的控制器的时候~我们很少注意导航栏的leftItem~因为正常情况下~push到下一个界面的leftItem就是上一个界面的self.title~并且它也就是一个返回的功...

aprill ⋅ 2016/03/08 ⋅ 0

自定义的导航条--CustomNavigationBar

一种自定义的导航条 之所以自定义导航条,原因有两个: 1、做同时兼容iOS6与iOS7的导航条时,使用原生导航条总是不顺手。于是想自定义一个,这样兼容iOS6与iOS7时,代码相对统一。另外,因为...

红薯 ⋅ 2014/01/09 ⋅ 0

iOS开发tips-UINavigationBar的切换

概述 在iOS系统中,如果控制器是以push方式进行管理的话,那么事实上多个控制器是共享的同一个导航栏。当然iOS系统的设计无可厚非,但是国内的应用经常会遇到很多个性的设计,就比如说A pus...

jianxin160 ⋅ 2017/11/08 ⋅ 0

UINavigation导航栏和UITabbar布局和样式

自定义UITabBarController 可以在ViewDidLoad里设置子控制器。当然其他地方也是可以的,但是放在这里可以更加有条理。 初始化 设置导航和tab标题 定义选中和普通状态下的图片 设置选中和普通...

云飞扬v5 ⋅ 2015/08/24 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

从 Confluence 5.3 及其早期版本中恢复空间

如果你需要从 Confluence 5.3 及其早期版本中的导出文件恢复到晚于 Confluence 5.3 的 Confluence 中的话。你可以使用临时的 Confluence 空间安装,然后将这个 Confluence 安装实例升级到你现...

honeymose ⋅ 今天 ⋅ 0

用ZBLOG2.3博客写读书笔记网站能创造今日头条的辉煌吗?

最近两年,著名的自媒体网站今日头条可以说是火得一塌糊涂,虽然从目前来看也遇到了一点瓶颈,毕竟发展到了一定的规模,继续增长就更加难了,但如今的今日头条规模和流量已经非常大了。 我们...

原创小博客 ⋅ 今天 ⋅ 0

MyBatis四大核心概念

本文讲解 MyBatis 四大核心概念(SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession、Mapper)。 MyBatis 作为互联网数据库映射工具界的“上古神器”,训有四大“神兽”,谓之:Sql...

waylau ⋅ 今天 ⋅ 0

以太坊java开发包web3j简介

web3j(org.web3j)是Java版本的以太坊JSON RPC接口协议封装实现,如果需要将你的Java应用或安卓应用接入以太坊,或者希望用java开发一个钱包应用,那么用web3j就对了。 web3j的功能相当完整...

汇智网教程 ⋅ 今天 ⋅ 0

2个线程交替打印100以内的数字

重点提示: 线程的本质上只是一个壳子,真正的逻辑其实在“竞态条件”中。 举个例子,比如本题中的打印,那么在竞态条件中,我只需要一个方法即可; 假如我的需求是2个线程,一个+1,一个-1,...

Germmy ⋅ 今天 ⋅ 0

Springboot2 之 Spring Data Redis 实现消息队列——发布/订阅模式

一般来说,消息队列有两种场景,一种是发布者订阅者模式,一种是生产者消费者模式,这里利用redis消息“发布/订阅”来简单实现订阅者模式。 实现之前先过过 redis 发布订阅的一些基础概念和操...

Simonton ⋅ 今天 ⋅ 0

error:Could not find gradle

一.更新Android Studio后打开Project,报如下错误: Error: Could not find com.android.tools.build:gradle:2.2.1. Searched in the following locations: file:/D:/software/android/andro......

Yao--靠自己 ⋅ 昨天 ⋅ 0

Spring boot 项目打包及引入本地jar包

Spring Boot 项目打包以及引入本地Jar包 [TOC] 上篇文章提到 Maven 项目添加本地jar包的三种方式 ,本篇文章记录下在实际项目中的应用。 spring boot 打包方式 我们知道,传统应用可以将程序...

Os_yxguang ⋅ 昨天 ⋅ 0

常见数据结构(二)-树(二叉树,红黑树,B树)

本文介绍数据结构中几种常见的树:二分查找树,2-3树,红黑树,B树 写在前面 本文所有图片均截图自coursera上普林斯顿的课程《Algorithms, Part I》中的Slides 相关命题的证明可参考《算法(第...

浮躁的码农 ⋅ 昨天 ⋅ 0

android -------- 混淆打包报错 (warning - InnerClass ...)

最近做Android混淆打包遇到一些问题,Android Sdutio 3.1 版本打包的 错误如下: Android studio warning - InnerClass annotations are missing corresponding EnclosingMember annotation......

切切歆语 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部