實用小技巧(二十七)—— 控制器跳轉(zhuǎn)邏輯的封裝

版本記錄

版本號 時間
V1.0 2017.11.05

前言

在app中,很多時候都需要熟悉一些小技巧讓您事半功倍,提高工作效率,這些小技巧都很小很細(xì)。感興趣的可以看看我寫的其他小技巧。
1. 實用小技巧(一):UIScrollView中上下左右滾動方向的判斷
2. 實用小技巧(二):屏幕橫豎屏的判斷和相關(guān)邏輯
3.實用小技巧(三):點擊手勢屏蔽子視圖的響應(yīng)
4.實用小技巧(四):動態(tài)的增刪標(biāo)簽視圖
5.實用小技巧(五):通過相冊或者相機更改圖標(biāo)
6.實用小技巧(六):打印ios里所有字體
7. 實用小技巧(七):UITableViewCell自適應(yīng)行高的計算
8. 實用小技巧(八):數(shù)字余額顯示的分隔
9.實用小技巧(九):類頭條模糊背景的實現(xiàn)
10.實用小技巧(十):晃動手機換后臺服務(wù)器網(wǎng)絡(luò)
11.實用小技巧(十一):scrollView及其子類顯示的一些異常處理
12.實用小技巧(十二):頭像圖片縮放以及保存到相冊簡單功能的實現(xiàn)
13.實用小技巧(十三):一種類酷我音樂盒動畫實現(xiàn)
14.實用小技巧(十四):生成跳往applestore指定app的方法
15.實用小技巧(十五):左側(cè)向右滑動返回上一級控制器
16.實用小技巧(十六):獲取設(shè)備信息
17.實用小技巧(十七):清除緩存目錄
18.實用小技巧(十八):取出gif圖的每一幀
19.實用小技巧(十九):獲取相機和麥克風(fēng)權(quán)限
20.實用小技巧(二十):游客模式的實現(xiàn)
21.實用小技巧(二十一):版本檢測的實現(xiàn)
22.實用小技巧(二十二):鍵盤遮擋問題
23. 實用小技巧(二十三):獲取閃光燈的控制
24. 實用小技巧(二十四):APP頁面開啟跳轉(zhuǎn)邏輯處理
25. 實用小技巧(二十五)—— 關(guān)于UILabel控件寬高的計算
26. 實用小技巧(二十六)—— APP中各種權(quán)限監(jiān)測和申請工具封裝

跳轉(zhuǎn)邏輯的封裝

下面我們看一下我做的跳轉(zhuǎn)邏輯封裝的文件代碼組織結(jié)構(gòu)。

下面看一下初步封裝的代碼。

1. JJJumpManager.h
#import <UIKit/UIKit.h>

/**
     跳轉(zhuǎn)工具
 */

@interface JJJumpManager : NSObject

+ (void)handURL:(NSString *)url param:(NSDictionary *)dict;

@end
2. JJJumpManager.m
#import "JJJumpManager.h"
#import "JJPersonSettingVC.h"
#import "JJVideoVC.h"
#import "JJLiveVC.h"

@implementation JJJumpManager

#pragma mark - Class Public Function

//分類

+ (void)handURL:(NSString *)url param:(NSDictionary *)dict
{
    if (!url) {
        return;
    }
    
    UIViewController *vc = [UIApplication sharedApplication].keyWindow.rootViewController;
    
    //h5頁面跳轉(zhuǎn)
    if ([url hasPrefix:@"http"] || [url hasPrefix:@"https"]) {
        //h5頁面跳轉(zhuǎn)
    }
    
    /**
     APP內(nèi)部跳轉(zhuǎn)
     */
    //個人中心
    if ([url hasPrefix:@"yaya.personalSetting"]) {
        JJPersonSettingVC *setVC = [[JJPersonSettingVC alloc] init];
        //這里可以進行統(tǒng)一的打點設(shè)置,通過設(shè)置From字段和屬性,確定要跳轉(zhuǎn)的頁面,下面同樣處理
        [self pushMyVc:setVC currentVc:vc];
    }
    
    //短視頻
    if ([url hasPrefix:@"yaya.shortvideo"]) {
        JJVideoVC *videoVC = [[JJVideoVC alloc] init];
        //這里可以進行統(tǒng)一的打點設(shè)置,通過設(shè)置From字段和屬性,確定要跳轉(zhuǎn)的頁面,下面同樣處理
        [self pushMyVc:videoVC currentVc:vc];
    }
    
    //直播
    if ([url hasPrefix:@"yaya.live"]) {
        JJLiveVC *liveVC = [[JJLiveVC alloc] init];
        //這里可以進行統(tǒng)一的打點設(shè)置,通過設(shè)置From字段和屬性,確定要跳轉(zhuǎn)的頁面,下面同樣處理
        [self pushMyVc:liveVC currentVc:vc];
    }
    
    //下面的邏輯類似,這里就省略了
}

#pragma mark - Class Private Function

//跳轉(zhuǎn)

+ (void)pushMyVc:(UIViewController *)mVc currentVc:(UIViewController *)currentVc
{
    if([currentVc isKindOfClass:[UITabBarController class]]){
        UITabBarController *mRootVc = (UITabBarController *)currentVc;
        [mRootVc.selectedViewController pushViewController:mVc animated:YES];
        return;
    }
    
    if ([currentVc isKindOfClass:[UINavigationController class]]) {
        UINavigationController *nv = (UINavigationController *)currentVc;
        [nv pushViewController:mVc animated:YES];
    }
    else{
        [currentVc.navigationController pushViewController:mVc animated:YES];
    }
}

@end

跳轉(zhuǎn)工具的使用

下面我們就看一下跳轉(zhuǎn)工具的使用情況,還是先看代碼。

1. ViewController.m
#import "ViewController.h"
#import "JJJumpManager.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    self.view.backgroundColor = [UIColor redColor];
    
    NSDictionary *dict = @{@"from": @"tabBar"};
    NSString *url = @"yaya.live";
    [JJJumpManager handURL:url param:dict];
}

@end
2. JJLiveVC.m
#import "JJLiveVC.h"

@interface JJLiveVC ()

@end

@implementation JJLiveVC

- (void)viewDidLoad
{
    [super viewDidLoad];
   
    self.view.backgroundColor = [UIColor redColor];
}

@end

這里from字段用于打點,根據(jù)其他需求可以增加或者減少字典中的鍵值對。下面看一下測試結(jié)果。

可見,實現(xiàn)了正常跳轉(zhuǎn)。詳細(xì)的可以看刀客傳奇 - Github

后記

未完,待續(xù)~~~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容