博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS-应用跳转
阅读量:6887 次
发布时间:2019-06-27

本文共 3483 字,大约阅读时间需要 11 分钟。

hot3.png

1.应用跳转

- (IBAction)openWangYi {        // 1.获取application对象    UIApplication *app = [UIApplication sharedApplication];    // 2.创建需要打开的应用程序的URL    // 在应用程序跳转中, 只要有协议头即可, 路径可有可无   #warning 协议头在项目设置-info-URL Types设置    NSURL *url = [NSURL URLWithString:@"wangyi://"];    // 3.利用application打开URL    if ([app canOpenURL:url]) {        // 3.1判断是否可以打开        [app openURL:url];    }else    {        // 3.2打开App STORE下载        NSLog(@"根据App id打开App STORE");    }}

2.应用跳转的Appdelegate代理

/** *  当被其他应用程序通过URL打开时就会调用 * *  @param application 当前的应用程序 *  @param url         打开当前程序的URL * *  @return 是否成功处理 */- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url{    // 1.获取首页控制器    UINavigationController *nav = (UINavigationController *)self.window.rootViewController;    UIViewController *vc = nav.topViewController;        NSLog(@"%@", url);    // 判断是通过哪一个URL打开的, 做出相应的处理(跳转到相应的控制器)    NSString *urlStr = url.absoluteString;    if ([urlStr hasPrefix:@"sina://login"]) {                // 截取打开我们程序的应用的scheme        NSRange range = [urlStr rangeOfString:@"sina://login?myScheme="];        NSString *scheme = [urlStr substringFromIndex:range.length];                NSLog(@"跳转到授权界面AAAAAAAAA %@", scheme);//        if ([vc isKindOfClass:[ViewController class]] == YES) {#warning 通过SB show跳转方法performSegueWithIdentifier,传送scheme            [vc performSegueWithIdentifier:@"home2accounts" sender:scheme];//        }            }else if ([urlStr hasPrefix:@"sina://view?id="])    {        NSLog(@"跳转到详情界面BBBBBBBBBB");        [vc performSegueWithIdentifier:@"home2detail" sender:nil];            }        return YES;}#warning iOS7之后的新方法/** *  当被其他应用程序通过URL打开时就会调用(新方法) * *  @param application       当前的应用程序 *  @param url               打开当前程序的URL *  @param sourceApplication 打开当前程序的Bundle identifier *  @param annotation * *  @return 是否成功处理 */- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation{#warning 注意: 如果实现了新方法, 旧方法旧失效了    /*     sourceApplication用途:     当我们做一些广告, 积分墙等推广的时候, 可以利用这个唯一表一记录当前程序是被哪一个程序推广打开的    */    NSLog(@"%@ %@", url, sourceApplication);    // 1.获取首页控制器    UINavigationController *nav = (UINavigationController *)self.window.rootViewController;    UIViewController *vc = nav.topViewController;        NSLog(@"%@", url);    // 判断是通过哪一个URL打开的, 做出相应的处理(跳转到相应的控制器)    NSString *urlStr = url.absoluteString;    if ([urlStr hasPrefix:@"sina://login"]) {                // 截取打开我们程序的应用的scheme        NSRange range = [urlStr rangeOfString:@"sina://login?myScheme="];        NSString *scheme = [urlStr substringFromIndex:range.length];                NSLog(@"跳转到授权界面 %@", scheme);        //        if ([vc isKindOfClass:[ViewController class]] == YES) {        [vc performSegueWithIdentifier:@"home2accounts" sender:scheme];        //        }            }else if ([urlStr hasPrefix:@"sina://view?id="])    {        NSLog(@"跳转到详情界面");        [vc performSegueWithIdentifier:@"home2detail" sender:nil];            }        return YES;}

3.prepareForSegue控制器跳转

prepareForSegue show连接跳转。一定是控制器跳控制器,不能控件跳控制器

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{    NSLog(@"首页 %@", sender);    UIViewController *vc = segue.destinationViewController;    if ([vc isKindOfClass:[TableViewController class]]) {        // 如果跳转的目标控制器是授权,才需要设置Scheme        TableViewController *tbVc = vc;        tbVc.callScheme = sender;    }}

转载于:https://my.oschina.net/u/2346786/blog/518152

你可能感兴趣的文章
新手安装postgreSQL后无法连接服务器
查看>>
递归和动态规划
查看>>
java实现简单的控制台管理系统
查看>>
建造模式
查看>>
BZOJ 4025: 二分图
查看>>
openNebula rgister img instance vms error collections
查看>>
error Infos
查看>>
PL/sql配置相关
查看>>
阿里云产品头条(2017年12月刊)
查看>>
IntelliJ IDEA 社区版没有 Spring Initializr
查看>>
inux多线程顺序控制的示例
查看>>
jquery实用的一些方法
查看>>
质数方阵
查看>>
jQuery $.each用法
查看>>
C语言结构体指针成员强制类型转换
查看>>
网络对抗技术作业一
查看>>
最短路(Floyd_Warshall) POJ 2240 Arbitrage
查看>>
spring boot 配置mybatis plus 控制台打印sql
查看>>
Windows系统安装Apache-tomacat
查看>>
补习系列(11)-springboot 文件上传原理
查看>>