首页 文章

如何正确关闭呈现的ViewController并返回到父ViewController?

提问于
浏览
0

我正面临一个我将要描述的问题,并且发现了一些类似的问题,但我不相信我的问题 .

我有一个带有2个VC1和VC2选项卡的 UITabBarController . VC1代表VC4 . VC2分段为VC3,VC3分段为VC4 . VC4包含 MPMoviePlayerViewController 实例,如下所示:

- - - - - -> VC1 \
TAB BAR VC /                    - - -> VC4
           \                   /
             -> VC2 -> VC3 -> /

我有一个通知,当视频结束时监听,并关闭VC4,然后回到VC提供给VC4的任何父VC,即如果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)
}

我没有't think I' m正确使用代码因为 self.presentedViewController?.dismissViewControllerAnimated(true, completion: nil) 停留在VC4 .

我发现了一些类似的问题:

但是,序列segue是不同的,因此我不能按照建议 .

我怎样才能做到这一点?谢谢

UPDATE:

如果从VC1 - > VC4开始, moviePlayerPlayBackDidFinish 中的以下代码正确地解除了VC4并返回到父VC1:

self.dismissViewControllerAnimated(true, completion: nil);

但是,从VC3 - > VC4转发时VC4不会被忽略 .

1 回答

相关问题