从 uinavigationbar 中删除子视图

Posted

技术标签:

【中文标题】从 uinavigationbar 中删除子视图【英文标题】:Removing subViews from uinavigationbar 【发布时间】:2013-02-12 09:06:38 【问题描述】:

嗨,要从 UINavigation 栏中删除子视图,我正在使用以下代码。我在导航栏中将标签、按钮和 imageVIew 作为子视图。

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


    [view removeFromSuperview];

当我运行它时,它正在删除我添加为的导航栏的背景图像

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

删除子视图后,我正在添加背景,但它没有添加。

有什么方法可以只删除导航栏的子视图而不删除背景。

【问题讨论】:

【参考方案1】:

一个快速的选项是向您要删除的视图的tag 属性添加一个值,并在删除子视图之前检查它,例如,假设您向子视图添加一个非零值:

for (UIView *view in self.navigationController.navigationBar.subviews) 
    if (view.tag != 0) 
        [view removeFromSuperview];
    

【讨论】:

【参考方案2】:

试试这个,

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

if([view isKindOfClass:[UIImageView class]])

  //change your bar image
 
else
 
[view removeFromSuperview];
 
 

【讨论】:

以上是关于从 uinavigationbar 中删除子视图的主要内容,如果未能解决你的问题,请参考以下文章

如何从第一个视图控制器中的第二个 UIView 控制器中删除 UINavigationBar label.text?

如何将子视图添加到 UIViewController 将 UINavigationBar 推到后面

仅将子视图添加到当前视图的 UINavigationBar

UINavigationBar 子视图隐藏了正确的 UIBarButtonItem

如何使用自定义背景图像从 UINavigationBar 和 UIToolbar 中删除圆角?

删除大标题 UINavigationBar 中 UISearchController 顶部的 1px 行