做了款跑步的app,其中部分页面的逻辑如上图。
我再开始跑步页面和跑步中的页面跳转中用的push
方式,跑步中页面到跑步暂停模式,再到成果分享这个页面全部都使用的model
方式,调用的presentModalViewController
方法。
请求,如果我想从分享成果直接返回到开始跑步界面,可不可以连续调用两次dismissViewControllerAnimated
和一次nav的pop
从而实现?
如果有其他方式可以完成这个逻辑,求告知!
【ps:(暂停→跑步)这个箭头忘记画了】
은
dismissViewControllerAnimated
을 두 번 호출할 필요가 없습니다.跑步中VC
가NavigationController
의POP
을 호출하고跑步中VC
을 팝업시켜 한 번에 세 명의 VC를 릴리스하도록 하면 됩니다.원칙은 아시겠지만
跑步中VC
의 브랜치(자식 VC)와 동일하게 실행 일시 정지와 실행 결과 공유가 제시되므로 상위 VC가 팝업되면 모두 팝업됩니다.두 개의 VC 레이어가 있는
跑步成果分享
에서跑步中VC
메서드를 역으로 호출하는 방법을 모른다면 다음과 같은 몇 가지 옵션이 있습니다.알림센터 이용하기
NSNotificationCenter
최후의 수단이 아닌 경우 코드를 불명확하게 만들고 이해하기 어렵게 만들 수 있으므로 너무 많이 사용하지 않는 것이 좋습니다프로토콜 콜백 델리게이트, 기존 방식, 조금 더 번거로움
分享跑步成果
VC에서[[self presentingViewController] presentingViewController]
는跑步中VC
입니다. 이미 이해하셨으리라 믿습니다.행운을 빕니다.
PS
얘야, 내가 계산을 잘못한 줄 알았어요.
사실 위에서 말씀드린 내용은 맞지만
跑步中VC
에는navigationController
도 없습니다.그의 상위 노드만이
그래서 다시 조정해야겠네요
presentingViewController
presentModalViewController方法
iOS7부터 지원 중단되었습니다!presentViewController:animated:completion
이 방법이군요!NavigationController
레벨의 VC는popToViewController
메서드를 통해 지정된 VC로 점프할 수 있지만, 현재 형식을 통해 열린 모달 스타일 VC는dismissModalViewController
을 통해서만 사라질 수 있습니다.