2011-10-12 189 views
9

在我的應用程序,在iOS 4的導航欄正常工作dissappeared開始的iOS 5,這是我想通引起的問題:我是在RootViewController的viewWillAppear中去除的方法子視圖:的iOS 5 UINavigationBar的移除子視圖(圖像子視圖)刪除導航欄

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

我這樣做是因爲第二個視圖控制器,我推到導航控制器添加的圖像和標籤導航欄,我必須刪除當視圖彈出。在iOS 5中,上面的代碼刪除了導航條。如何解決這個問題或正確的方式來支持iOS4和iOS5?

回答

6

setTag對於那些圖像和uilabel然後從上面的代碼中刪除它的伎倆。

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

是的,這在技術上是可行的,但是如果您或其他人以後需要回來,您的代碼會變得不那麼容易理解。您有可能無法有效地閱讀和跟蹤您的代碼正在做什麼。至少使這些標籤常量可以幫助您查看要刪除的內容。 – RPeck

+0

您可以使用下面的代碼簡單地刪除子視圖 [(UILabel *)[self.navigationController.navigationBar viewWithTag:yourViewTag] removeFromSuperview]; – Himanshu

0

你可以製作你自己UIKit類的新增視圖子類並檢查這些特定的子類。實際上,爲了獲得最清晰,最易讀的代碼,您應該繼承導航控制器和導航欄,以便繪製自定義圖像和標籤,以便您可以簡單地將背景圖像和前景標籤設置爲零。這需要一點時間才能完成,但最終結果會更加可擴展。