1

こんにちはUINavigationバーからサブビューを削除するには、次のコードを使用しています。ナビゲーションバーのサブビューとしてlabel、button、imageVIewがあります。

   for (UIView *view in self.navigationController.navigationBar.subviews) {


    [view removeFromSuperview];
}

私がこれを実行している間、それは私が追加したナビゲーションバーのbackGround画像を削除しています

     [self.navigationController.navigationBar setBackgroundImage:[UIImagem imageNamed:@"header-background"] forBarMetrics:UIBarMetricsDefault];

サブビューを削除した後、背景を追加していますが、追加していません。

背景を削除せずにナビゲーションバーのサブビューのみを削除する方法はありますか?

4

2 に答える 2

4

迅速なオプションは、tag削除するビューのプロパティに値を追加し、サブビューを削除する前にそれを確認することです。たとえば、サブビューにゼロ以外の値を追加するとします。

for (UIView *view in self.navigationController.navigationBar.subviews) {
    if (view.tag != 0) {
        [view removeFromSuperview];
    }
}
于 2013-02-12T09:11:49.917 に答える
1

これを試して、

for (UIView *view in self.navigationController.navigationBar.subviews) {

if([view isKindOfClass:[UIImageView class]])
{
  //change your bar image
 }
else
 {
[view removeFromSuperview];
 }
 }
于 2013-02-12T09:19:02.210 に答える