
做了款跑步的app,其中部分页面的逻辑如上图。
我再开始跑步页面和跑步中的页面跳转中用的push方式,跑步中页面到跑步暂停模式,再到成果分享这个页面全部都使用的model方式,调用的presentModalViewController方法。
请求,如果我想从分享成果直接返回到开始跑步界面,可不可以连续调用两次dismissViewControllerAnimated和一次nav的pop从而实现?
如果有其他方式可以完成这个逻辑,求告知!
【ps:(暂停→跑步)这个箭头忘记画了】
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
不需要调用两次
dismissViewControllerAnimated,直接让跑步中VC调用其NavigationController的POP将跑步中VC弹出就可以一次性释放三个VC了。原理你懂吧,跑步暂停和分享跑步成果是present出来的,相当于是
跑步中VC的枝(子VC),所以父VC弹出,就都弹出了。如果你不知道如何在
跑步成果分享这个垮了两层的VC去反向调用跑步中VC的方法,我这里有几个方案:使用通知中心
NSNotificationCenter如果不是万不得已,不建议过多使用,容易让代码变得晦涩难懂协议回调delegate,传统方法,稍微麻烦一点
在
分享跑步成果VC中,[[self presentingViewController] presentingViewController]就是你的跑步中VC,相信你已经懂了。祝你好运。
PS
小伙子, 我以为我数错了。
其实我上面说的是对的,只是
跑步中VC也是没有navigationController的。他的父节点才有
所以 还要再调一次
presentingViewControllerpresentModalViewController方法自iOS7就弃用了!你是指presentViewController:animated:completion这个方法吧!在
NavigationController层级下的VC可以通过popToViewController这个方法跳转到指定VC,而通过present形式打开的Modal样式的VC,只能通过dismissModalViewController来消失。