iOS灵活跳转,iOS万能跳转,iOS跳转管理功能的实现

来源:互联网 发布:单片机程序破解 编辑:程序博客网 时间:2024/05/21 17:16

比如客户端有x个页面,每个页面的数据从后台取并且每个页面的json数据key不一样,点击事件也是后台传过来的,跳转的界面都有可能是原生界面、webview、其他类型界面。这样跳来跳去就需要一个类来专门管理跳转。


首先数据key不一致 :


首页的一个按钮对应的Model是,第二主页的一个按钮对应的Model是

SuKoModel:

{

NSString *url//跳转地址

NSString *name//按钮名称

还有很多:比如是否有导航条,

导航条的title,是否需要登录。。

}


MyModel

{

NSString *detailUrl//跳转地址

NSString *btnName//按钮名称

...

}






然后对于跳转链接也有规定,

如果是http://就跳到webView如果是native://xxx开头就跳到原生页面,等等 



按钮的点击事件分别是

- (void)btnClicked:(UIButton *)btnn{        if (btnn.tag == 0) {        //        //每个按钮对应的model        //        SuKoModel *model = [[SuKoModel alloc]init];        model.url = @"http://blog.csdn.net/qq_15509071/article/details/71123323";        model.name = @"";        [JumpManager jumpToControllerWithModel:model OriginalController:self];    }else if(btnn.tag == 1){        SuKoModel *model = [[SuKoModel alloc]init];        model.url = @"native://ZhuanZhangViewController";        model.name = @"";        [JumpManager jumpToControllerWithModel:model OriginalController:self];    }else{        SuKoModel *model = [[SuKoModel alloc]init];        model.url = @"native://HuiKuanViewController";        model.name = @"";        [JumpManager jumpToControllerWithModel:model OriginalController:self];    }}

- (void)btnClicked:(UIButton *)btnn{        if (btnn.tag == 0) {        MyModel *moel = [[MyModel alloc]init];        moel.detailUrl = @"native://JieKuanViewController";        [JumpManager jumpToControllerWithModel:moel OriginalController:self];    }else if(btnn.tag == 1){        MyModel *moel = [[MyModel alloc]init];        moel.detailUrl = @"http://blog.csdn.net/qq_15509071/article/details/70379690";        [JumpManager jumpToControllerWithModel:moel OriginalController:self];    }else{            }}

需要把不同的model转换为统一字段的model

+(JumpModel *)changeModel:(id)model{        JumpModel *jumpModel = [[JumpModel alloc]init];        if ([model isKindOfClass:[SuKoModel class]]) {        jumpModel.jumpUrl = ((SuKoModel*)model).url;    }else if([model isKindOfClass:[MyModel class]]){        jumpModel.jumpUrl = ((MyModel*)model).detailUrl;    }        return jumpModel;}

跳转类方法

+(void)jumpToControllerWithModel:(id)model OriginalController:(id)originalController;{    JumpModel *jumpModel = [JumpManager changeModel:model];    UIViewController *localOriginalController = originalController;        if ([jumpModel.jumpUrl hasPrefix:@"http:"]) {        WebViewController *controller = [[WebViewController alloc]initWithURL:jumpModel.jumpUrl];        [localOriginalController.navigationController pushViewController:controller animated:YES];    }else if([jumpModel.jumpUrl hasPrefix:@"native:"]){        NSString *controllerString = [jumpModel.jumpUrl stringByReplacingOccurrencesOfString:@"native://" withString:@""];        UIViewController *vc = [[NSClassFromString(controllerString) alloc]init];        [localOriginalController.navigationController pushViewController:vc animated:YES];            }}

示例工程下载地址:百度网盘点击打开链接



0 0
原创粉丝点击