测试已测试 | ✗ |
语言语言 | Obj-CObjective C |
许可证 | MIT |
发布最后发布 | 2017年8月 |
由 chengkang 维护。
依赖项 | |
Masonry | = 1.0.2 |
MJRefresh | = 3.1.12 |
MJExtension | = 3.0.13 |
常用的 Obj-C 代码
#示例项目
查看 HNBKitDemo.xcworkspace
import "WeatherViewController.h"
WeatherViewController *vc = [WeatherViewController new];
[self.navigationController pushViewController:vc animated:YES];
1 app 所有的页面都包括导航控制器,直接通过 HNBURLRouter 提供的 push 方法或 model 方法打开目的 VC,目的 VC 通过注册的字符串绑定、runTime 获取,这样解除了 import 头文件的依赖,但存在问题,如果 VC 需要指定参数,那么使用 Router 打开 VC 时, [Router openUrl:@"*****" withParams:dict]
参数的格式不明确,字典应该是什么样子?需要查阅相关的 VC。为解决这个问题,便有了第二点。
2 基于 Router 提供一个中介者,为每个 VC 提供打开方式。例如:[Mediator orderDeatilViewControllerWithId:orderID]
方法内部使用 URLRouter 获取具体的 VC 并赋参,参数可以是普通类型,也可以是复杂数据类型,甚至是非常规类型,这样就解决了 casatwy 提出的 传 params 容易懵逼的问题
(iOS 应用架构谈 组件化方案)。
3 为了解决线上 bug 问题,可以使用 webView 替换 native VC 的方法修改线上 bug。具体做法是在 Mediator 打开一个具体的控制器时,可以在检查本地字典需要打开的控制器是否需要被替换,本地字典可以在 app 启动时就获取。