滑动返回注意

来源:互联网 发布:js 对象转数组 编辑:程序博客网 时间:2024/05/16 11:49

1、关于导航控制器对象的初始化根控制器方法

 FYNavigationController *nav = [[FYNavigationController alloc] initWithRootViewController:vc];

关于导航控制器对象的初始化根控制器方法,initWithRootViewController:是怎么实现的?默认是调用pushViewController:方法,即导航控制器对象nav调用
[nav pushViewController:vc];这个方法

2、滑动返回手势
这里写图片描述

这里写图片描述
导航控制器是有代理的,当界面跳转时代理会调用上述方法,当然要先设置代理:self.delegate = self;千万别忘了这一步,要不然这个方法是不会执行的,那你的手势管理也就不会奏效。

下面是导航控制器的.m文件的实现:

#import "FYNavigationController.h"@interface FYNavigationController ()<UINavigationControllerDelegate>@property (nonatomic,strong) id popDelegate;//滑动返回手势的代理@end@implementation FYNavigationController- (void)viewDidLoad {    [super viewDidLoad];    self.delegate = self;//别忘了设置代理!!    _popDelegate = self.interactivePopGestureRecognizer.delegate;//保存滑动返回手势识别器}//导航控制器控制子控制器跳转时会调用该方法- (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated{    //当手机显示的界面为根控制器时    if (viewController == self.viewControllers[0]) {        //还原滑动返回手势代理        self.interactivePopGestureRecognizer.delegate = _popDelegate;    } else {        //当显示的不是根控制器时,清空滑动返回手势代理        //清空滑动返回手势的代理就能实现滑动返回        self.interactivePopGestureRecognizer.delegate = nil;    }}- (void)didReceiveMemoryWarning {    [super didReceiveMemoryWarning];    // Dispose of any resources that can be recreated.}@end
0 0
原创粉丝点击