首页 > 其他分享 >iOS开发_简化控制器的跳转代码

iOS开发_简化控制器的跳转代码

时间:2023-03-03 15:57:53浏览次数:43  
标签:completion 控制器 self iOS controller 简化 跳转 void

  • 新建分类
  • UIViewController+GC.h

@interface UIViewController (GC)

// 简化控制器跳转
- (void)push:(id)controller;
// 简化返回
- (void)pop;
// 回到根控制器
- (void)pop_To_Root;

// 简化控制器弹出
- (void)present:(id)controller Finish:(void (^ __nullable)(void))completion;
// 简化消失
- (void)dismiss:(void (^ __nullable)(void))completion;

@end
  • UIViewController+GC.m

@implementation UIViewController (GC)

// 判断一个对象是实例对象还是类对象
- (BOOL)is_Instance:(id)gc_object {
    return [gc_object class] != gc_object;
}

// 简化控制器跳转
- (void)push:(id)controller {
    // 判断一个对象是实例对象
    if ([self is_Instance:controller]) {
        [self.navigationController pushViewController:controller animated:YES];
    }
    else {
        // 是一个类而已
        [self push:[[controller alloc] init]];
    }
}

// 简化返回
- (void)pop {
    [self.navigationController popViewControllerAnimated:YES];
}

// 回到根控制器
- (void)pop_To_Root {
    [self.navigationController popToRootViewControllerAnimated:YES];
}

// 简化控制器弹出
- (void)present:(id)controller Finish:(void (^ __nullable)(void))completion {
    // 判断一个对象是实例对象
    if ([self is_Instance:controller]) {
        BC_Nav_Controller *navController;
        if ([controller isKindOfClass:[BC_Nav_Controller class]]) {
            navController = (BC_Nav_Controller *)controller;
        }
        else {
            navController = [[BC_Nav_Controller alloc] initWithRootViewController:controller];
        }
        navController.modalPresentationStyle = UIModalPresentationFullScreen;
        [self presentViewController:navController animated:YES completion:completion];
    }
    else {
        // 是一个类而已
        [self present:[[controller alloc] init] Finish:completion];
    }
}

// 简化消失
- (void)dismiss:(void (^ __nullable)(void))completion {
    [self dismissViewControllerAnimated:YES completion:completion];
}

@end

标签:completion,控制器,self,iOS,controller,简化,跳转,void
From: https://www.cnblogs.com/CH520/p/17175866.html

相关文章

  • 统一单点登录&跳转
    在客户端输入地址(xxx.xxx.xxx/controll/方法/参数)服务端到controll层进行数据匹配 跳转前端响应情况图片跳转与列表跳转图片:编写跳转函数列表公用图片跳转函数,@c......
  • 抖音小程序安卓摄像头和ios前置摄像头不一致得解决方法
    目前安卓测试正常,需要把抖音拍的照片用canvas反转过来直接上代码html<cameradevice-position="front"flash="off"onError="error"style="width:320px;height:1......
  • 基于FPGA的RGB灯WS2812B的控制器设计
    这次设计一个RGB灯的控制器,该控制器具有如下特点:每个灯的颜色可调,亮灭可控可以设置参数来修改RGB的数目 WS2812B的数据时序如下图所示:   (图片来源自网络、......
  • 外部浏览器中H5跳转微信小程序方法
    H5网页通过URLScheme进行跳转URLScheme的获取方法有两种1.在需要跳转的小程序的小程序管理后台中通过工具直接生成,该方法生成的URLScheme不能实时指定跳转小程序的......
  • 6.封装axios定义ajax请求函数模块与优化统一处理异常
    安装axios包:【版本:1.3.3】npminstallaxios初级版本api/ajax.js文件内容/*能发送异步ajax请求的函数模块封装axios库函数的返回值是promise对象:.......
  • 解决 ios 调用 wx
    1.不需要使用网页授权域名方式在进入H5公众号后,利用js进行刷新一次,然后打个标记if(window.location.href.indexOf("refresh")===-1){varnewUrl=window.......
  • 坏消息,new Date()方法在IOS系统中存在null值情况
    背景介绍笔者最近在开发小程序,发现在使用newDate()函数在电脑模拟器上倒是没什么影响能很好实现效果,但是在我的Iphone上看到的效果跟预想有出入。图为在电脑微信小程序......
  • linux驱动移植-GPIO控制器驱动
    ----------------------------------------------------------------------------------------------------------------------------内核版本:linux5.2.8根文件系统:busybo......
  • iOS Programing
    ARC1.ARC-AutomaticReferenceCounting办公室照明原理2.函数release立即释放,autorelease进入autoreleasepool里3.IMPCaching提高OC函数运行速度4.NSAutorelea......
  • #yyds干货盘点 【React工作记录三】React中如何跳转页面传参(参数较短)
     目录​​前言​​​​需求​​​​ 总结​​前言我是歌谣我有个兄弟巅峰的时候排名c站总榜19叫前端小歌谣曾经我花了三年的时间创作了他现在我要用五年的时间超越他......