如何優雅的實現界面跳轉 之 原生界面跳轉的統跳實踐 - DarwinNativeDispatcher

如何優雅的實現界面跳轉 之 原生界面跳轉的統跳實踐 - DarwinNativeDispatcher


@author Jou Email Weibo or Github


預熱 - 我要解決的問題

app長大的過程中,也是我們痛苦的過程。如果不暫停一下重構代碼,以后開發的過程中會是分分鐘日了狗。
首先推薦Gaosboy的一篇文章解耦神器 —— 統跳協議和Rewrite引擎
文章中,介紹了天貓app,基于文件配置和uri的頁面跳轉。這大大增加了app端的靈活性, 而這種實現很類似今天的前端或后端開發中的 靜態路由 和 動態路由協議。
有了思想, 沒有實現, 所以DarwinNativeDispatcher是這種Thinking下的產物。
DarwinNativeDispatcher針對性的解決原生界面間的跳轉問題,但它并不涉及實現任何的路由協議。

為了更好地理解, 我舉個栗子(對是栗子):

場景0.

用戶重新登錄,需要重新布局根部的rootviewcontroller,如tabbarcontroller 并重新選到默認的第一項

場景1.

在某些特殊情況下, 你不得不在view中調用方法,跳轉界面。

場景2.

實現自定義的alert窗,常需要實現很多次要邏輯,如自定義window,

場景3.

在某些ue下,你需要替換rootcontroller

相信我, 在遇到類似問題的時候,你不必再在appdelegate 或 其分類中,寫跳轉邏輯,或是不停的獲取rootcontroller造成一些ugly的代碼。
你完全可以試試DarwinNativeDispatcher, 經過簡單的初始化,它可以輕松handle這些問題,包括聚美app的那種奇葩的結構。

在DarwinNativeDispatcher之后,我還在寫三個框架,他們分別是

  1. DarwinHybridDispatcher 針對web頁面的分派器
  2. DarwinReactDispatcher 針對react native頁面的分派器
  3. DarwinRouter 針對統跳的路由協議

如何使用 - DarwinNativeDispatcher

沒錯,DarwinNativeDispatcher在表現上,也是我鏈式編程的一次實踐。

  1. 引入DarwinNativeDispatcher
#import "DarwinNativeDispatcher.h"

  1. 如果你的rootcontroller是 tabbarcontroller 或是 navigationController

[DNDispatcher dispatcher].defaultTabbarController.pushViewController(controller);

// or

[DNDispatcher dispatcher].defaultNavigationController.pushViewController(controller);

  1. 替換rootcontroller
UIViewController *controller = [[UIViewController alloc]init];
controller.view.backgroundColor = [UIColor orangeColor];

[DNDispatcher dispatcher].rootViewController.replaceRootControllerWithController(controller);

  1. 實現自己的alert對話框

UIViewController *controller = [[UIViewController alloc]init];
controller.view.backgroundColor = [UIColor orangeColor];

[[DNDispatcher dispatcher].alertViewController clearColor];

//show it
[DNDispatcher dispatcher].alertViewController.show(controller);

//hide it
[[DNDispatcher dispatcher].alertViewController hide];

后言

DarwinNativeDispatcher 現在還沒有到1.0版本,還有很多可以想象的東西,歡迎讓他更加完善,和提pr。
DarwinNativeDispatcher's Github

@author Jou Email Weibo or Github

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容