iOS - 以编程方式加载应用程序上的视图didFinishingLaunching

时间:2015-06-30 17:41:21

标签: ios objective-c video

这个问题主要是关于我应该如何构建我的应用程序。当应用程序加载时,用户可以从要播放的视频列表中进行选择,但实际的视频播放器位于不同的视图控制器上。目前我只是将视图控制器保留在内存中,以便在用户在整个应用程序中导航时视频可以连续播放。

所以问题是,如果用户在加载该电影视图控制器之前选择了一个视频,那么当然不会发生任何事情。

我应该如何构建我的应用程序,以便无论电影播放器​​视图控制器是否保存在内存中,视频都可以连续播放?这可能吗?

2 个答案:

答案 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中,您可以观察或控制视频播放。

我希望这可以帮到你。