objective-c - 关于iOS页面间的跳转。
PHPz
PHPz 2017-04-17 17:24:51
[iOS讨论组]

做了款跑步的app,其中部分页面的逻辑如上图。
我再开始跑步页面和跑步中的页面跳转中用的push方式,跑步中页面到跑步暂停模式,再到成果分享这个页面全部都使用的model方式,调用的presentModalViewController方法。
请求,如果我想从分享成果直接返回到开始跑步界面,可不可以连续调用两次dismissViewControllerAnimated和一次nav的pop从而实现?
如果有其他方式可以完成这个逻辑,求告知!

【ps:(暂停→跑步)这个箭头忘记画了】

PHPz
PHPz

学习是最好的投资!

全部回复(2)
PHP中文网

不需要调用两次dismissViewControllerAnimated ,直接让跑步中VC调用其NavigationControllerPOP跑步中VC弹出就可以一次性释放三个VC了。

原理你懂吧,跑步暂停和分享跑步成果是present出来的,相当于是跑步中VC的枝(子VC),所以父VC弹出,就都弹出了。

如果你不知道如何在跑步成果分享这个垮了两层的VC去反向调用跑步中VC的方法,我这里有几个方案:

  1. 使用通知中心 NSNotificationCenter 如果不是万不得已,不建议过多使用,容易让代码变得晦涩难懂

  2. 协议回调delegate,传统方法,稍微麻烦一点

  3. 分享跑步成果VC中,[[self presentingViewController] presentingViewController]就是你的跑步中VC,相信你已经懂了。

祝你好运。

PS
小伙子, 我以为我数错了。

其实我上面说的是对的,只是跑步中VC也是没有navigationController的。

他的父节点才有

所以 还要再调一次 presentingViewController

ringa_lee

presentModalViewController方法自iOS7就弃用了!你是指presentViewController:animated:completion这个方法吧!

NavigationController层级下的VC可以通过popToViewController这个方法跳转到指定VC,而通过present形式打开的Modal样式的VC,只能通过dismissModalViewController来消失。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号