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

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

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

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

谢谢。

【问题讨论】:

  • 你真的不应该使用addSubView。你读过它的官方课程参考吗?

标签: ios cocoa-touch uikit uinavigationbar uinavigationitem


【解决方案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 (如您问题中的标签)并将其添加到相应视图控制器的导航项数组中时,视图控制器会打印导航栏上的标签,在你推送另一个视图控制器后它会消失。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多