資料介紹
軟件簡(jiǎn)介
FFRouter 是 iOS 中一個(gè)強(qiáng)大且易用的 URL 路由庫(kù),支持 URL Rewrite,使 APP 在發(fā)布之后也可以動(dòng)態(tài)修改相關(guān)路由邏輯。基于匹配查找 URL,效率高。集成和使用都非常簡(jiǎn)單!
功能
-
具備基本的 URL 注冊(cè)、Route、取消注冊(cè)、打印 Log 等
-
支持使用通配符(*)注冊(cè) URL
-
支持 URL Rewrite
-
支持 Rewrite 時(shí)獲取原 URL 參數(shù)或 URLComponents,并可對(duì)其進(jìn)行URL Encode或 Decode
-
支持通過(guò) URL 獲取 Object
-
支持 Route URL 時(shí)傳遞非常規(guī)對(duì)象
-
支持 Route 一個(gè)未注冊(cè)的 URL 時(shí)統(tǒng)一回調(diào)
安裝
CocoaPods
target?'MyApp'?do ??pod?'FFRouter' end
運(yùn)行?pod install
手動(dòng)安裝
添加其中的?FFRouter?文件夾到自己項(xiàng)目
使用方法
首先
#import?"FFRouter.h"
1、基本使用
/** ?注冊(cè)?url ?@param?routeURL?要注冊(cè)的?URL ?@param?handlerBlock?URL?被?Route?后的回調(diào) ?*/ +?(void)registerRouteURL:(NSString?*)routeURL?handler:(FFRouterHandler)handlerBlock; /** ?注冊(cè)?URL,通過(guò)該方式注冊(cè)的?URL?被?Route?后可返回一個(gè)?Object ?@param?routeURL?要注冊(cè)的?URL ?@param?handlerBlock?URL?被?Route?后的回調(diào),可在回調(diào)中返回一個(gè)?Object ?*/ +?(void)registerObjectRouteURL:(NSString?*)routeURL?handler:(FFObjectRouterHandler)handlerBlock; /** ?判斷?URL?是否可被?Route(是否已經(jīng)注冊(cè)) ?@param?URL?要判斷的?URL ?@return?是否可被?Route ?*/ +?(BOOL)canRouteURL:(NSString?*)URL; /** ?Route?一個(gè)?URL ?@param?URL?要?Router?的?URL ?*/ +?(void)routeURL:(NSString?*)URL; /** ?Route?一個(gè)?URL,并帶上額外參數(shù) ?@param?URL?要?Router?的?URL ?@param?parameters?額外參數(shù) ?*/ +?(void)routeURL:(NSString?*)URL?withParameters:(NSDictionary?*)parameters; /** ?Route?一個(gè)?URL,可獲得返回的?Object ?@param?URL?要?Router?的?URL ?@return?返回的?Object ?*/ +?(id)routeObjectURL:(NSString?*)URL; /** ?Route?一個(gè)?URL,并帶上額外參數(shù),可獲得返回的?Object ?@param?URL?要?Router?的?URL ?@param?parameters?額外參數(shù) ?@return?返回的?Object ?*/ +?(id)routeObjectURL:(NSString?*)URL?withParameters:(NSDictionary ?*)parameters; /** ?Route?一個(gè)未注冊(cè)?URL?時(shí)回調(diào) ?@param?handler?回調(diào) ?*/ +?(void)routeUnregisterURLHandler:(FFRouterUnregisterURLHandler)handler; /** ?取消注冊(cè)某個(gè)?URL ?@param?URL?要被取消注冊(cè)的?URL ?*/ +?(void)unregisterRouteURL:(NSString?*)URL; /** ?取消注冊(cè)所有?URL ?*/ +?(void)unregisterAllRoutes; /** ?是否顯示?Log,用于調(diào)試 ?@param?enable?YES?or?NO,默認(rèn)為?NO ?*/ +?(void)setLogEnabled:(BOOL)enable;
【備注】
(1)注冊(cè) URL:
[FFRouter?registerRouteURL:@"protocol://page/routerDetails/:id"?handler:^(NSDictionary?*routerParameters)?{ ???//Route的URL與本次注冊(cè)URL匹配時(shí)的回調(diào)?? }]; [FFRouter?registerRouteURL:@"wildcard://*"?handler:^(NSDictionary?*routerParameters)?{ ???//Route的URL與本次注冊(cè)URL匹配時(shí)的回調(diào)?? }]; [FFRouter?registerRouteURL:@"protocol://page/routerObjectDetails"?handler:^(NSDictionary?*routerParameters)?{ ???//Route的URL與本次注冊(cè)URL匹配時(shí)的回調(diào)?? }];
可通過(guò)routerParameters獲取 URL 中的參數(shù),routerParameters[FFRouterParameterURLKey]為完整的URL. (2)當(dāng)需要通過(guò)以下方法:
+?(id)routeObjectURL:(NSString?*)URL;
Route 一個(gè) URL 并獲取返回值時(shí),需要使用如下方法注冊(cè) URL:
+?(void)registerObjectRouteURL:(NSString?*)routeURL?handler:(FFObjectRouterHandler)handlerBlock;
并在 handlerBlock 中返回需要返回的 Object,例如:
//注冊(cè)并返回必要的值
[FFRouter?registerObjectRouteURL:@"protocol://page/routerObjectDetails"?handler:^id(NSDictionary?*routerParameters)?{
????????NSString?*str?=?@“根據(jù)需要返回必要的Object”;
????????return?str;
????}];
????
//獲取返回的值
NSString?*ret?=?[FFRouter?routeObjectURL:@"protocol://page/routerObjectDetails"];
(3)如果需要傳遞非常規(guī)對(duì)象作為參數(shù),如UIImage等,可使用如下方式:
[FFRouter?routeURL:@"protocol://page/routerDetails?nickname=imlifengfeng"?withParameters:@{@"img":[UIImage?imageNamed:@"router_test_img"]}];
2、URL Rewrite
/** ?根據(jù)設(shè)置的?Rules?去?rewrite?一個(gè)?URL ?@param?url?將被?rewrite?的?URL ?@return?rewrite?后的?URL ?*/ +?(NSString?*)rewriteURL:(NSString?*)url; /** ?添加一個(gè)?RewriteRule ?@param?matchRule?正則匹配規(guī)則 ?@param?targetRule?轉(zhuǎn)換規(guī)則 ?*/ +?(void)addRewriteMatchRule:(NSString?*)matchRule?targetRule:(NSString?*)targetRule; /** ?同時(shí)添加多個(gè)?RewriteRule,格式必須為:@[@{@"matchRule":@"YourMatchRule",@"targetRule":@"YourTargetRule"},...] ?@param?rules?RewriteRules ?*/ +?(void)addRewriteRules:(NSArray?*)rules; /** ?移除一個(gè)?RewriteRule ?@param?matchRule?將被移除的?matchRule ?*/ +?(void)removeRewriteMatchRule:(NSString?*)matchRule; /** ?移除所有?RewriteRule ?*/ +?(void)removeAllRewriteRules;
【備注】
(1)可以使用正則添加一條 Rewrite 規(guī)則,例如: 要實(shí)現(xiàn)打開(kāi) URL:https://www.taobao.com/search/原子彈時(shí),將其攔截,改用本地已注冊(cè)的 URL:protocol://page/routerDetails?product=原子彈打開(kāi)。 首先添加一條 Rewrite 規(guī)則:
[FFRouterRewrite?addRewriteMatchRule:@"(?:https://)?www.taobao.com/search/(.*)"?targetRule:@"protocol://page/routerDetails?product=$1"];
之后在打開(kāi)URL:https://www.taobao.com/search/原子彈時(shí),將會(huì) Rewrite 到URL:protocol://page/routerDetails?product=原子彈。
[FFRouter?routeURL:@"https://www.taobao.com/search/原子彈"];
(2)可以通過(guò)以下方法同時(shí)增加多個(gè)規(guī)則:
+?(void)addRewriteRules:(NSArray?*)rules;
其中 rules 格式必須為以下格式:
@[@{@"matchRule":@"YourMatchRule1",@"targetRule":@"YourTargetRule1"},
??@{@"matchRule":@"YourMatchRule2",@"targetRule":@"YourTargetRule2"},
??@{@"matchRule":@"YourMatchRule3",@"targetRule":@"YourTargetRule3"},]
(3)Rewrite 規(guī)則中的保留字:
-
通過(guò)?
$scheme、$host、$port、$path、$query、$fragment?獲取標(biāo)準(zhǔn) URL 中的相應(yīng)部分。通過(guò)$url獲取完整 URL -
通過(guò)?
$1、$2、$3...獲取matchRule的正則中使用圓括號(hào)取出的參數(shù) -
$:原變量的值、$$:原變量URL Encode后的值、$#:原變量URL Decode后的值
例如:?https://www.taobao.com/search/原子彈對(duì)于Rewrite 規(guī)則(?:https://)?www.taobao.com/search/(.*)
$1=原子彈 $$1=%e5%8e%9f%e5%ad%90%e5%bc%b9
同樣,https://www.taobao.com/search/%e5%8e%9f%e5%ad%90%e5%bc%b9對(duì)于Rewrite 規(guī)則(?:https://)?www.taobao.com/search/(.*)
$1=%e5%8e%9f%e5%ad%90%e5%bc%b9 $#1=原子彈
2、FFRouterNavigation
考慮到經(jīng)常用路由配置UIViewController之間的跳轉(zhuǎn),所以增加了額外的工具FFRouterNavigation來(lái)更方便地控制UIViewController之間的跳轉(zhuǎn)。具體使用方法如下:
/** ?push?時(shí)是否自動(dòng)隱藏底部TabBar ?@param?hide?是否自動(dòng)隱藏,默認(rèn)為?NO ?*/ +?(void)autoHidesBottomBarWhenPushed:(BOOL)hide; /** ?獲取當(dāng)前?ViewController ?@return?當(dāng)前?ViewController ?*/ +?(UIViewController?*)currentViewController; /** ?獲取當(dāng)前?NavigationViewController ?@return?return?當(dāng)前?NavigationViewController ?*/ +?(nullable?UINavigationController?*)currentNavigationViewController; /** ?Push?ViewController ?@param?viewController?被?Push?的?ViewController ?@param?animated?是否使用動(dòng)畫(huà) ?*/ +?(void)pushViewController:(UIViewController?*)viewController?animated:(BOOL)animated; /** ?Push?ViewController,可設(shè)置當(dāng)前?ViewController?是否還保留 ?@param?viewController?被?Push?的?ViewController ?@param?replace?當(dāng)前?ViewController?是否還保留 ?@param?animated?是否使用動(dòng)畫(huà) ?*/ +?(void)pushViewController:(UIViewController?*)viewController?replace:(BOOL)replace?animated:(BOOL)animated; /** ?Push?多個(gè)?ViewController ?@param?viewControllers?ViewController?Array ?@param?animated?是否使用動(dòng)畫(huà) ?*/ +?(void)pushViewControllerArray:(NSArray?*)viewControllers?animated:(BOOL)animated; /** ?present?ViewController ?@param?viewController?被?present?的?ViewController ?@param?animated?是否使用動(dòng)畫(huà) ?@param?completion?回調(diào) ?*/ +?(void)presentViewController:(UIViewController?*)viewController?animated:(BOOL)animated?completion:(void?(^?__nullable)(void))completion; /** ?關(guān)閉當(dāng)前?ViewController,push、present?方式通用 ?@param?animated?是否使用動(dòng)畫(huà) ?*/ +?(void)closeViewControllerAnimated:(BOOL)animated;
感謝
FFRouter實(shí)現(xiàn)方案參考了以下文章,在此表示感謝!
- LABVIEW NPOI庫(kù)文件下載 212次下載
- altium designer元件庫(kù)下載 861次下載
- AD 2D標(biāo)準(zhǔn)封裝庫(kù)下載 26次下載
- 蘋果ios藍(lán)牙調(diào)試助手工具源代碼下載 7次下載
- IRMCK/F171靈活易用的電機(jī)控制芯片 5次下載
- TP-LINK無(wú)線路由器升級(jí)軟件及說(shuō)明 1次下載
- 選擇最簡(jiǎn)單易用的HyperLynx進(jìn)行串?dāng)_仿真資料下載
- 基于信任機(jī)制與Rank閥值的安全RPL路由協(xié)議Sec-RPL 11次下載
- 如何使用OpenWRT路由器實(shí)現(xiàn)網(wǎng)絡(luò)存儲(chǔ)系統(tǒng)的設(shè)計(jì) 29次下載
- 兼容iOS 10的一些問(wèn)題和使用資料整理合集
- AN1246中文手冊(cè)之如何在Microchip圖形庫(kù)中創(chuàng)建控件
- 通用封裝庫(kù)(protel/AD版本通用)資料下載 0次下載
- 在路由器上安裝IOS映像 0次下載
- 基于BGP協(xié)議屬性的路由策略 11次下載
- 路由控制和路由選擇
- 千兆路由器和百兆路由器的區(qū)別 萬(wàn)兆路由器有什么好處? 4.4k次閱讀
- 路由重發(fā)布和路由匯總的概念 2.7k次閱讀
- 無(wú)模式數(shù)據(jù)庫(kù)的利與弊 1.1k次閱讀
- 什么是路由表?IP路由表包含了哪些要素? 1.7w次閱讀
- 1000+常用Python庫(kù)一覽 1.8k次閱讀
- RabbitMQ中的路由模型(direct) 1k次閱讀
- work庫(kù)在VHDL中的特殊用法 1.6k次閱讀
- Cargo如何訪問(wèn)世界上最強(qiáng)大的3D庫(kù) 1.5k次閱讀
- 關(guān)于路由策略數(shù)據(jù)庫(kù)(RPDB) 2.9k次閱讀
- 一文讀懂boost庫(kù)的概念和安裝方式 8.6k次閱讀
- 內(nèi)存數(shù)據(jù)庫(kù)系統(tǒng)全面解析 4.9k次閱讀
- 思科路由器多少錢_思科路由器優(yōu)勢(shì)有哪些_如何選擇選擇思科路由器 3.5k次閱讀
- 極路由和普通路由有什么區(qū)別 3.3k次閱讀
- 極路由怎么設(shè)置_極路由詳細(xì)設(shè)置圖文教程 12.8w次閱讀
- 動(dòng)態(tài)路由特點(diǎn)及構(gòu)成 3.8k次閱讀
下載排行
本周
- 1矽力杰 Silergy SY7215A 同步升壓調(diào)節(jié)器 規(guī)格書(shū) Datasheet 佰祥電子
- 1.12 MB | 5次下載 | 免費(fèi)
- 2HT81696H 內(nèi)置升壓的30W立體聲D類音頻功放數(shù)據(jù)手冊(cè)
- 1.21 MB | 1次下載 | 免費(fèi)
- 3HTA6863 3W超低噪聲超低功耗單聲道D類音頻功率放大器數(shù)據(jù)手冊(cè)
- 0.87 MB | 次下載 | 免費(fèi)
- 4南芯 Southchip SC8802C 充電控制器 規(guī)格書(shū) Datasheet 佰祥電子
- 88.16 KB | 次下載 | 免費(fèi)
- 5矽力杰 Silergy SY7065 同步升壓轉(zhuǎn)換器 規(guī)格書(shū) Datasheet 佰祥電子
- 910.67 KB | 次下載 | 免費(fèi)
- 6矽力杰 Silergy SY7066 同步升壓轉(zhuǎn)換器 規(guī)格書(shū) Datasheet 佰祥電子
- 989.14 KB | 次下載 | 免費(fèi)
- 7WD6208A產(chǎn)品規(guī)格書(shū)
- 631.24 KB | 次下載 | 免費(fèi)
- 8NB685 26 V,12 A,低靜態(tài)電流,大電流 同步降壓變換器數(shù)據(jù)手冊(cè)
- 1.64 MB | 次下載 | 2 積分
本月
- 1EMC PCB設(shè)計(jì)總結(jié)
- 0.33 MB | 12次下載 | 免費(fèi)
- 2PD取電芯片 ECP5702規(guī)格書(shū)
- 0.88 MB | 5次下載 | 免費(fèi)
- 3矽力杰 Silergy SY7215A 同步升壓調(diào)節(jié)器 規(guī)格書(shū) Datasheet 佰祥電子
- 1.12 MB | 5次下載 | 免費(fèi)
- 4氮化鎵GaN FET/GaN HEMT 功率驅(qū)動(dòng)電路選型表
- 0.10 MB | 3次下載 | 免費(fèi)
- 5PD取電芯片,可取5/9/12/15/20V電壓ECP5702數(shù)據(jù)手冊(cè)
- 0.88 MB | 3次下載 | 免費(fèi)
- 6SY50655 用于高輸入電壓應(yīng)用的偽固定頻率SSR反激式穩(wěn)壓器英文資料
- 1.01 MB | 3次下載 | 免費(fèi)
- 7怎么為半導(dǎo)體測(cè)試儀選擇精密放大器
- 0.65 MB | 2次下載 | 免費(fèi)
- 8SY52341 次級(jí)側(cè)同步整流英文手冊(cè)
- 0.94 MB | 2次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935137次下載 | 10 積分
- 2開(kāi)源硬件-PMP21529.1-4 開(kāi)關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計(jì)
- 1.48MB | 420064次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233095次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191469次下載 | 10 積分
- 5十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183360次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81606次下載 | 10 積分
- 7Keil工具M(jìn)DK-Arm免費(fèi)下載
- 0.02 MB | 73832次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65991次下載 | 10 積分
電子發(fā)燒友App





創(chuàng)作
發(fā)文章
發(fā)帖
提問(wèn)
發(fā)資料
發(fā)視頻
上傳資料賺積分
評(píng)論