Runtime的入门与应用之九-页面跳转
来源:互联网 发布:大英百科全书软件 编辑:程序博客网 时间:2024/06/01 07:19
在你的开发过程中,是否遇到过如下的需求:
- 在tableView类型的展示列表中,点击每个cell中人物头像都可以跳转到人物详情,可参见微博中的头像,同理包括转发、评论按钮、各种链接及linkcard。
跳转到任意页面
(1)产品要求,某个页面的不同banner图,点击可以跳转到任何一个页面,可能是原生的页面A、页面B,或者是web页C。
(2)在web页面,可以跳转到任何一个原生页面。
(3)在远程推送中跳转到任意指定的页面。
以上2种需求,我想大多数开发者都遇到过,并且可以实现这种功能。毕竟,这是比较基础的功能。但是代码未必那么优雅。
一般处理办法
针对 1:一般初学者会用target或者block等方法在tableView的代理方法拿到事件,并把要执行的跳转写到controller里。功能是可以实现的,但问题是这种cell及相似的cell(布局有些变化,或者多几个少几个控件)一般出现在多个页面。这样的话相同的代码就会出现在多个地方。就算把跳转方法抽取出来写成category,但是target或者block总是每个地方都要写的。
针对 2:初级的方法是每个地方写一坨判断及跳转,高级一些是抽取出来写在基类或者category。
优雅的解决办法(利用runtime)
利用runtime动态生成对象、属性、方法这特性,我们可以先跟服务端商量好,定义跳转规则,比如要跳转到A控制器,需要传属性id、type,那么服务端返回字典给我,里面有控制器名,两个属性名跟属性值,客户端就可以根据控制器名生成对象,再用kvc给对象赋值,这样就搞定了。
举例:比如根据推送规则跳转对应界面HSFeedsViewController
HSFeedsViewController.h:
进入该界面需要传的属性
- 1
- 2
- 3
- 4
- 5
- 6
- 7
AppDelegate.m 中添加以下代码片段:
推送过来的消息规则
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
接收推送消息
- 1
- 2
- 3
- 4
跳转界面:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
检测对象是否存在该属性:
阅读全文
0 0
- Runtime的入门与应用之九-页面跳转
- Runtime的入门与应用之三
- Runtime的入门与应用之六-实际运用
- Runtime的入门与应用之八-字典转模型
- Runtime的入门与应用之四-相关术语
- Runtime的入门与应用之五-消息发送与转发
- Runtime的入门与应用之七-归档与解档
- flex3.6入门学习笔记之九 ColorPicker的应用
- runtime从入门到精通(九)—— 万能界面跳转
- JSP入门初级教程之实现页面跳转
- JSP入门初级教程之实现页面跳转
- ActionScript3.0入门之HelloWorld、页面跳转
- (MAVEN) Spring MVC 入门之页面跳转
- 商店应用的进程模型 -- 页面跳转
- 页面跳转与重定向(之二)
- 页面跳转与重定向(之二)
- 使用runtime 实现weex 跳转原生页面
- 使用runtime 实现weex 跳转原生页面
- 起点
- Runtime的入门与应用之八-字典转模型
- u盘NTFS与FAT32区别
- 该死的感觉.
- JDBC通用方法及DbUtils组件使用
- Runtime的入门与应用之九-页面跳转
- 推荐一个web在线的mysql数据库管理系统
- Linux系统入门基础学习(一)
- U盘格式ntfs 转ext4
- 一个安卓工程师学习后台的经历《二》maven篇
- Linux Redhat7.3 搭建常用开发环境实战
- HTML5_Canvas
- Runtime的入门与应用之四-相关术语
- php-nginx文件上传大小