我正面临一个我将要描述的问题,并且发现了一些类似的问题,但我不相信我的问题 .
我有一个带有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 回答
最后通过在
moviePlayerPlayBackDidFinish
中添加其他代码解决了我的问题:经过大量研究,我从这里找到了解决方案:dismissViewControllerAnimated() does not dismiss view controller