上家公司獨立開發,而且是從無到有的,不是那種先讓外包做一個版本然后從上邊改的那種,這樣就比較靈活了,而且看別人的代碼并不是一件輕松愜意的事兒。
我最初認識HHRouter是上上家公司的最后一段時間,我們打算對已有項目進行重構的,之前這個項目是前端和原生混合開發的,性能不是特別好。重構的時候我們就選用了路由模式,這個模式主要就是解決界面耦合的(個人理解,感覺用過之后對它的理解還是比較淺的,在這里只講下我對它的使用吧)。然后上家公司的項目是個商城類的APP,感覺用這個模式還是挺好的,畢竟據說淘寶、京東等APP也是用的路由模式。。。
路由模式也有好幾種第三方可以選擇,我們最終選擇了HHRouter這個第三方,這個是我的領導定的,感覺我遇到HHRouter也是一種機緣,哈哈。。。
好了,廢話不多說,下面我們就來談論下我使用HHRouter這個第三方的具體方法吧。
首先,需要創建一個基于HHRouter的單例類,這個類就放APP中所有的viewcontroller,然后在這個類中需要實現一個初始化的方法,并在.h中聲明
這個就是需要寫在初始化方法里的,好了,接下來看看怎么獲取這些VC吧。
既然我們要用這個單例類來獲取這些VC,那么我們就需要在didFinishLaunchingWithOptions這個方法里實現初始化路由這個方法:
然后在需要使用這個VC的地方
這樣調用,這種方式不用在這個類中導入launchVC的頭文件
那么問題就來了,一般我們導入頭文件的時候傳值可以在第二個類的.h文件中屬性描述,還有block這些傳值方式好像都不一樣了,那么這個HHRouter該怎么傳值呢?請往下看
1、字符串拼接傳值
這個將字符串拼接的方法類似于屬性描述傳值
這個是在目標VC里取值的方法
2、block
在launchVC中相當于聲明吧
然后
這樣使用。當然,聲明的時候也可以在callBlock后邊進行字符串拼接,這樣這些拼接的參數就是map:toBlock后邊的params字典中的鍵值對。注意多個參數字符串拼接的時候要使用&符號隔開
如果你要傳遞一個model的話可以先把model轉化成json形似,然后再轉化成字符串進行拼接,至于怎么轉化,這里就不在贅述了。
路由模式的底層原理是有文章介紹的,想要了解的可以再簡書中搜索
想要交流經驗的可以加我QQ979778584