FRDIntent :https://github.com/douban/FRDIntent
使用 iOS 系统方法完成各 view controller 之间的跳转,各 view controller 会耦合得很紧。跳转时,一个 view controller 需要知道下一个 view controller 是如何创建的各种细节。这造成了 view controller 之间的依赖。
iOS 系统还为各个应用间的相互调用提供了一种基于 URL 的处理方案。即应用可以声明自己可以处理某些有特定 scheme 和 host 的 URL 。其他应用就可以通过调用这些 URL 而跳转到该应用的某些页面。部分 URL Router 项目比如,使用这个机制通过调用 URL 来实现 view controller 之间的相互调用。这种方案存在一些问题,比如:
在 Android 中,这一问题得到了优雅的解决。这就是 Intent, Intent 是一个消息传递对象,用于启动 Activity 。 FRDIntent 是对 Android Intent 的一个模仿。当然,相对于 Android Intent , FRDIntent/Intent 做了极度简化。这是因为 FRDIntent/Intent 的使用场景更为简单:只处理应用内的 view controller 间跳转。在 FRDIntent/Intent 的基础上,我们在同一个项目封装了 FRDIntent/URLRoutes ,用于处理应用的外部调用。这样做其实是为了隔离了外部调用和内部调用,做这个区分会带来一些好处:
1
ldehai 2016-10-30 09:58:10 +08:00 1
从详情页返回数据,有没有优雅的方法。
比如 UITableViewController ,到 detailViewController 去修改数据,改完了要回去刷新列表数据。 几种常见的做法: 1 、 notification 2 、 delegate 3 、 block 。总觉得要写的代码还是有点多。 |
3
iShawnWang 2016-10-30 11:14:28 +08:00 via iPhone
@ldehai 同求优雅的解决方案...
|
5
lincode OP @ldehai FRDIntent 提供了一个优雅的方法: startControllerForResult 。这是对 Android 的 startControllerForActivity 的模仿。 FRDIntentDemo 中 https://github.com/douban/FRDIntent/blob/master/FRDIntentDemo/MainViewController.m#L78 对如何使用做了展示。
|
7
jesse_luo 2016-10-30 13:40:52 +08:00
赞,不过 FRDModuleManager 并没有开源的样子
|
8
lincode OP |
10
kitalphaj 2016-10-31 16:32:55 +08:00
想要优雅可以用 unwind
|