iOS技术点

iOS - 路由跳转页面Push 不用导入控制器头文件

2019-10-28  本文已影响0人  东风不起尘

在项目开发中经常性的要跳转控制器,然而每次都要导入控制器的头文件 这样一来有点麻烦 故此有一些方法可以偷懒的办法(程序员就是要不但的“偷懒”才能进步不是吗) 进入正题吧 如何实现这样的功能了? 肯定少比了runtime的事了

一.新建一个文件如下:RDRouterManager.h
//
// RDRouterManager.h
// RD
//
// Created by 易东 on 2019/10/18.
// Copyright © 2019 易东. All rights reserved.
//

import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

typedef void(^RDRouterBlock) (id backData);

@protocol RDRouterManagerDelegate <NSObject>

@optional
//可以用字典 传一些属性值

@end

/// 路由的管理

@interface UIViewController(RDRouterManager)<RDRouterManagerDelegate>

@property (nonatomic,copy,nullable)RDRouterBlock lhz_RouterBlock;

@end

NS_ASSUME_NONNULL_END

二.实现文件如下:RDRouterManager.m

import "RDRouterManager.h"

import <objc/runtime.h>

//这个是导航栏控制器的基类 可以使用你们自己封装的

import "BaseNavigationController.h"

typedef enum : NSUInteger {
RDRouterTypePush,
RDRouterTypePresent
} RDRouterType;

pragma clang diagnostic push

pragma clang diagnostic ignored "-Wnonnull"

@implementation UIViewController(RDRouterManager)

pragma mark ---- 属性赋值

pragma clang diagnostic pop

static char JZTCallBackBlockKey;

@end

三.调用事例:
1.[self.navigationController pushViewControllerName:@"xxxVC" animated:YES];

2.[self.navigationController pushViewControllerName:@"xxxVC" param:@{@"model":xxx}];
xxxVC控制器中有属性指model 可以用字典传值 在xxxVC控制器中就可以直接使用传过来的值了
是不是非常方便.......

上一篇 下一篇

猜你喜欢

热点阅读