4

我正在尝试解决这个问题:

情况:

我有一个非常基本的应用程序,一个 MMDrawerController 里面有一个 tableview,当一个项目被按下时它链接到一个 uitabbarcontroller。在第一页里面是一个嵌入的 youtube UIWebView,当按下它时,它会全屏播放 youtube 视频。

这是正在发生的事情。

  1. 按视频,全屏打开并开始播放
  2. UITabBar viewWillDisappear 触发
  3. 根 MMDrawerController viewWillAppear 触发
  4. 视频结束
  5. 用户回到他们开始的 UITabBar 并且一切似乎都很好,即使它早些时候“消失”了

现在我将布尔值放在两个视图的 ViewWillAppears / Disappears 中,以检查应用程序的当前状态。通常它是 0,1 表示表已打开或 uitabbar 控制器已打开。视频结束后,他们显示 0,0。如果我按回导航,则在从任何地方导航时都会收到“开始/结束外观转换的不平衡调用”。

现在如果我听 youtube 视频的开头然后开火:

[self.navigationController popToRootViewControllerAnimated:NO];

我可以防止发生不平衡的呼叫,并且用户可以继续浏览应用程序。然而,他们没有观看视频,他们只是被抛回一个视图。

在 3 中也是如此。我可以在两个控制器上检查 0、0,然后几乎重新启动整个应用程序。但这不是一个好的解决方案。

预期结果:

用户可以按下 uiwebview,观看视频,然后返回到上次中断的地方。如果他们回击导航控制器,则不会出现不平衡的外观过渡。


我尝试了很多东西,比如

[self.navigationController poptoViewController:...]


从我在这一点上收集到的信息来看,它与在根控制器中加载的全屏视频有关(因此它的 viewWillAppear 在 3 时触发),但之后我没有正确地“放置”回来。就像是

[self.navigationController heyTheUserIsPresentlyIn:self]

视频消失后我可以打电话给我真是太好了

非常感谢任何帮助,尽管我已经为此工作了几个小时,如果我是个白痴,任何指向书籍中文档或章节的链接都会有很大帮助。谢谢。

4

2 回答 2

3

这听起来像是ViewController生命周期问题。

您确定要从 a 导航UITableView到 aUITabBarController吗?尝试删除后者,因为它通常是根并且可以基于此假设进行ViewController调用。viewWillDisappearviewWillAppear

如果您需要一个不是根的选项卡式控件,ViewController可以考虑滚动您自己的控件?

于 2013-10-25T20:40:12.517 回答
1

好吧,当一系列导航动画或动画开始时没有
正确结束第一个动画时,就会发生这种情况,所以我猜
你的动画也是如此,即使不是导航控制器,也要注意你的动画。
希望对你有帮助

于 2013-10-25T04:06:23.573 回答