这个问题主要是关于我应该如何构建我的应用程序。当应用程序加载时,用户可以从要播放的视频列表中进行选择,但实际的视频播放器位于不同的视图控制器上。目前我只是将视图控制器保留在内存中,以便在用户在整个应用程序中导航时视频可以连续播放。
所以问题是,如果用户在加载该电影视图控制器之前选择了一个视频,那么当然不会发生任何事情。
我应该如何构建我的应用程序,以便无论电影播放器视图控制器是否保存在内存中,视频都可以连续播放?这可能吗?
答案 0 :(得分:0)
我不能100%确定你要做的事情;但是在XCode中创建的默认项目将"以编程方式在app上加载视图didFinishingLaunching"无需任何进一步编码。
通常,您应该使用初始视图或视图控制器(如导航控制器)构建您的应用程序;并在" viewDidLoad"中启动任何可见的操作目标视图的方法。
在您的情况下,我建议您先直接加载到视频控制器;然后,如果没有选择视频,则以编程方式划分到视频选择器视图。
答案 1 :(得分:0)
通常,我在我的项目中创建这样的结构,我认为你需要在OverlayViewController
中进行特殊查看,看一个例子:
MainViewController - As rootViewController
|- content (Any view controller to be presented, yes inside MainViewController)
|- OverlayViewController (a view controller over content )
此结构允许您在不更改整个层次结构的情况下更改内容。
在MainViewController
,你需要一种方法来将当前内容更改为另一种内容,有一个简单的例子说明你如何做到这一点:
// PS I'm not sure if this will work in the first try, I wrote from my mind right now :)
func changeViewController (controller: UIViewController) {
let from: UIViewController
if childViewControllers.count > 0 {
from = childViewControllers.first as! UIViewController
}
else {
presentViewController(controller)
return
}
let transitionContext = SomeViewControllerContextTransitioning (
fromViewController: from,
toViewController: controller
)
transitionContext.onAnimationComplete = { success in
if !success {
// TODO: Error fallback
}
else {
from.view.removeFromSuperview()
from.removeFromParentViewController()
controller.didMoveToParentViewController(self)
}
}
from.willMoveToParentViewController(nil)
addChildViewController(controller)
SomeAnimator().animateTransition(transitionContext)
}
最后,在MainViewController
中,您可以观察或控制视频播放。
我希望这可以帮到你。