Appdelegate里面跳转页面

分析:
(a)如果程序没有在后台运行 而是彻底退出的时候 点击推送消息进入应用,这个方法的launchOptions 会有值

  NSDictionary  * userInfo = [launchOptions  objectForKey : UIApplicationLaunchOptionsRemoteNotificationKey ];
- ( BOOL )application:( UIApplication *)application didFinishLaunchingWithOptions:( NSDictionary *)launchOptions
(b)如果程序处于正在运行或者是后台状态时,在这个方法的userInfo会获得值
- ( void )application:( UIApplication *)application didReceiveRemoteNotification:( NSDictionary *)userInfo;


1. 如果跳转的是导航视图(一般是从主页向后面的页面跳转)
其中home是主页
if ([userInfo[ @"msg_type" ] isEqualToString : @"film" ]) {
  MovieDetailViewController *movie = [[ MovieDetailViewController alloc ] init ];
 movie. id = [ NSString stringWithFormat : @"%d" ,[userInfo[ @"id" ] intValue ]];
 [ home . navigationController pushViewController :movie animated : YES ];
}

2. 如果不是,使用NotificationCenter 推一个通知给需要跳转的类,接收这个通知的类,接收后处理该跳转到哪个视图(通知传值)

-( void )goMovie{
   
MovieDetailViewController *movieDetail = [[ MovieDetailViewController alloc ] init ];
    movieDetail.
id = id ;
    [
self . navigationController pushViewController :movieDetail animated : YES ];
}



特别推荐:
  每次跳转时可以先跳转回rootVC,然后执行跳转。

//普通推送 直接返回home

    UINavigationController *navigationController = (UINavigationController *)self.window.rootViewController;

    [navigationController popToRootViewControllerAnimated:NO];


    UpComingMovieDetailVC *movie = [[UpComingMovieDetailVC alloc] init];

        movie.movieId = [NSString stringWithFormat:@"%@",_userInfoDict[@"id"]];

        [home.navigationController pushViewController:movie animated:YES];


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值