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

Posted

技术标签:

【中文标题】如何从第一个视图控制器中的第二个 UIView 控制器中删除 UINavigationBar label.text?【英文标题】:How to remove UINavigationBar label.text from second UIView Controller which is coming in first View controller? 【发布时间】:2014-01-28 13:12:33 【问题描述】:

我有一个标签,我使用 addSubView 属性在 UINavigationBar 上显示,我越来越喜欢:

但是当我去secondView Controller时,它看起来像:

它出现在第二个控制器的后退按钮上。那么如何从第二个 UI 中删除“状态”标签。

谢谢。

【问题讨论】:

你真的不应该使用addSubView。你读过它的官方课程参考吗? 【参考方案1】:

不要将子视图添加到导航栏。它不是为此而生的。 我建议您阅读ios human interface guidelines 并使用UIBarButtonItem 将控件正确添加到导航栏。

【讨论】:

【参考方案2】:

在第一个视图控制器中 -

-(void)viewWillAppear:(BOOL)animated 

    //Add Label on UINavigationBar
      [super viewWillAppear:animated];
      [self.navigationController.navigationBar addSubview:navLabel];


-(void)viewWillDisappear:(BOOL)animated 

    // Remove label from UINavigationBar
    [super viewWillDisappear:animated];
    [navLabel removeFromSuperview];

【讨论】:

谢谢...拉胡尔。你让我开心。【参考方案3】:

您应该标记您的子视图并在您的第二个视图控制器的导航栏的子视图中搜索它,然后[subview removeFromSuperview]

您不应该将子视图添加到您的导航栏,您可以使用导航项来实现那种东西。您可以使用 initWithCustomView: 初始化一个 UIBarButtonItem,其中包含该标签。

【讨论】:

但是我们不能通过导航项使用 addSubview 属性。 每个视图控制器都有自己的导航项,当您使用自定义视图创建 UIBarButtonItem (如您问题中的标签)并将其添加到相应视图控制器的导航项数组中时,视图控制器会打印导航栏上的标签,在你推送另一个视图控制器后它会消失。

以上是关于如何从第一个视图控制器中的第二个 UIView 控制器中删除 UINavigationBar label.text?的主要内容,如果未能解决你的问题,请参考以下文章

如何从一个 XIB 中的不同 UIViewController 文件控制第二个 UIView(子视图)

uitableview didselectrowatindex 仅适用于第一个表视图而不适用于同一视图控制器中的第二个表视图?

如何更改从第一个活动单击的按钮上的第二个活动的文本? [科特林]

如何从位于故事板上的视图控制器获取子视图

如何使用 uinavigationcontroller 将数据和响应从第二个视图控制器发送回第一个视图控制器

如何从collectionView中的第二项开始?