我有问题。我正在使用three20并且正在使用TTYoutubeView,这个问题并不一定需要知道three20来修复我认为。
我的问题是,我在导航栏上有自定义drawMethod,但是,当我加载YouTube视频时,我需要告诉它忽略我的自定义绘制方法(这不是问题,我有一个全局BOOL,可以做到这一点)。
我的问题是,我无法检测到youtube视频何时加载,它是通过UIWebview中的对象启动的,所以没有UITouches可以捕获,我不喜欢子类化UIWebview,就像在youtube之后视频已被解雇,我也无法抓住这个。
我需要的是一种方法,每当我的导航栏被绘制时询问'当前的viewController是什么类',然后我可以根据显示的内容告诉它要绘制什么。
NSLog(@"%@",[TTNavigator navigator].topViewController);
NSLog(@"%@",[TTNavigator navigator].visibleViewController);
我正在我的draw方法中注销viewControllers,这很有效,我的代码记录如下
2010-09-08 16:39:23.171 MyApp[3512:307] <HomeController: 0x264df0>
2010-09-08 16:39:23.174 MyApp[3512:307] <HomeController: 0x264df0>
问题是,当youtube视频加载时,它似乎加载了一个modalViewController,我的代码仍然会注销这个modalController下面的viewController。它并没有告诉我最重要的是什么。
当我想到它时,检测到viewController似乎是一个明亮的火花,就我而言,它仍然是一个好主意。我只是不知道如何找出当前最顶层的视图。 (因为topViewController和visibleViewController似乎也不太准确)
答案 0 :(得分:2)
我意识到navBar是在推送加载的viewController之后绘制的。另外,modalViewController位于navigationController上'stack'中topViewController的ontop上,并且当modalViewController被解除时不要求他们重新绘制navBar ...
最后我做到了。
在我的navBar绘制方法中,在检查BOOL并进行适当绘制后,我会进行检查。
if ([[TTNavigator navigator].topViewController isKindOfClass:[VideoController class]]) {
kDrawNavBar = FALSE;
}
这意味着一旦我的videoController(带有youtube webview /按钮的那个)加载,BOOL就会改变。因此,当加载了我手中的新modalViewController时,它会绘制默认的navBar,而不是我的自定义图像。
剩下要做的就是覆盖我的navBar控制器上关于videoController的后退按钮动作,并设置kDrawNavBar = TRUE;
这样一旦退出这个视图,然后回到我的'主屏幕',一切都回来了正常。
希望将来可以帮助其他人。