iOS 5 UINavigationBar删除子视图(图像子视图)删除导航栏

在我的应用程序,工作正常在iOS 4 navigationBar消失开始的iOS 5.这是我想到的问题:我在RootViewController viewWillAppear方法中删除子视图:

for(UIView* view in self.navigationController.navigationBar.subviews) { if ([view isKindOfClass:[UILabel class]]) { [view removeFromSuperview]; } if([view isKindOfClass:[UIImageView class]]) { [view removeFromSuperview]; } } 

我是这样做的,因为我推入导航控制器的第二个视图控制器添加的图像和标签到导航栏,我不得不删除当视图popup。 在iOS 5中,上面的代码将删除navigationBar。 如何解决这个问题或正确的方式来支持iOS4和iOS5?

setTag为这些图像和uilabel然后从上面的代码中删除了伎俩。

 for(UIView* view in self.navigationController.navigationBar.subviews) { if(view.tag == 9 || view.tag == 99) { [view removeFromSuperview]; } } 

你可以添加你自己的UIKit类的添加视图子类并检查这些特定的子类。 实际上,为了获得最清晰,最易读的代码,您应该inheritance导航控制器和导航栏以允许绘制自定义图像和标签,以便您可以简单地将背景图像和前景标签设置为零。 这需要一点时间,但是最终的结果将会更加可扩展。