我面临一个将要描述的问题,并且发现了一些类似的问题,但是我认为这与我的问题无关。
我有一个带有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。我发现了一些类似的问题:
但是,序列顺序是不同的,因此我无法遵循建议。
我该如何实现?谢谢
更新:
如果从VC1-> VC4发出,则
moviePlayerPlayBackDidFinish
中的以下代码可正确关闭VC4并返回到父VC1:self.dismissViewControllerAnimated(true, completion: nil);
但是,从VC3-> VC4转到VC4时不会关闭。
最佳答案
最后通过在moviePlayerPlayBackDidFinish
中添加其他代码解决了我的问题:
self.navigationController?.popViewControllerAnimated(true)
经过大量研究,我从这里找到了解决方案:dismissViewControllerAnimated() does not dismiss view controller