[英]How to properly dismiss the presented ViewController and go back to the parent ViewController?
我面臨一個將要描述的問題,並且發現了一些類似的問題,但是我認為這與我的問題無關。
我有一個帶有2個VC1和VC2選項卡的UITabBarController
。 VC1連接到VC4。 VC2選擇到VC3,而VC3選擇到VC4。 VC4包含一個MPMoviePlayerViewController
實例,如下所示:
- - - - - -> VC1 \
TAB BAR VC / - - -> VC4
\ /
-> VC2 -> VC3 -> /
我有一個通知,可在視頻播放結束時偵聽並關閉VC4,然后返回到父VC呈現VC4的任何一個,即,如果VC1呈現VC4,則在VC4解除后應返回VC1。 同樣,如果VC3提供了VC4,則在VC4被解散后,應回到VC3。
在VC4中:
override func viewDidLoad()
{
NSNotificationCenter.defaultCenter().addObserver(
self,
selector: "moviePlayerPlayBackDidFinish:",
name: MPMoviePlayerPlaybackDidFinishNotification,
object: player?.moviePlayer)
}
func moviePlayerPlayBackDidFinish(notification: NSNotification)
{
NSNotificationCenter.defaultCenter().removeObserver(
self,
name: MPMoviePlayerPlaybackDidFinishNotification,
object: notification.object
)
player!.view.removeFromSuperview()
self.presentedViewController?.dismissViewControllerAnimated(true, completion: nil)
}
我認為我使用的代碼不正確,因為self.presentedViewController?.dismissViewControllerAnimated(true, completion: nil)
停留在VC4。
我發現了一些類似的問題:
但是,序列順序是不同的,因此我無法遵循建議。
我該如何實現? 謝謝
更新:
如果從moviePlayerPlayBackDidFinish
> VC4 moviePlayerPlayBackDidFinish
, moviePlayerPlayBackDidFinish
的以下代碼moviePlayerPlayBackDidFinish
正確關閉VC4並返回到父VC1:
self.dismissViewControllerAnimated(true, completion: nil);
但是,從VC3-> VC4轉到VC4時不會關閉。
最后通過在moviePlayerPlayBackDidFinish
添加其他代碼解決了我的問題:
self.navigationController?.popViewControllerAnimated(true)
經過大量研究,我從這里找到了解決方案: dismissViewControllerAnimated()不會關閉視圖控制器
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.