2015-02-10 41 views
0

我在我的UINavigationController标题下添加了一个小标记,以便用户知道标题是可点击的。您可以在下面的代码中看到如何将此标签添加到导航栏中。无法从UINavigationController.view中删除UILabel

_labelCalendarMenuArrow    = [[UILabel alloc] initWithFrame:CGRectMake([UIScreen mainScreen].bounds.size.width/2 - 5, 30, 10, 26)]; 
    _labelCalendarMenuArrow.text   = @" ̬"; 
    _labelCalendarMenuArrow.font   = [UIFont fontWithName:@"HelveticaNeue" size:30]; 
    _labelCalendarMenuArrow.textAlignment = NSTextAlignmentCenter; 
    _labelCalendarMenuArrow.textColor  = [UIColor whiteColor]; 
    [self.navigationController.view addSubview:_labelCalendarMenuArrow]; 

问题是我离开此屏幕时无法从navigationController.view中删除此UILabel。在下面的代码中,您可以看到我如何尝试隐藏或删除此UILabel的一些方法,但它们都不工作...... UILabel将保留在NavigationController中,直到我转到不同的视图堆栈并返回。有什么建议?

- (void)viewWillDisappear:(BOOL)animated { 
    [_labelCalendarMenuArrow removeFromSuperview]; 
    _labelCalendarMenuArrow = nil; 
    _labelCalendarMenuArrow.alpha = 0; 
} 
+0

顺便说一句 - 在@“̬”我用我的标签是有点怪异,并显示出了怪异的串...应该是之间引用而不是在右引号之下。 ......或许这与它有关...... – Adama 2015-02-10 17:36:14

+0

刚刚测试......不,这与这个问题无关。 – Adama 2015-02-10 17:38:08

回答

-1

你在这里试图做的是相当可怕的,在父导航控制器视图内添加视图是违反所有意义的。

请阅读苹果的人机界面指南,因为有一个更好的解决方案来表示标题可以在那里点击。 https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/MobileHIG/

如果您仍然坚持在导航栏的标题标签下添加标签,则应该为导航项目实现titleView。在该视图中,您必须包含您自己的标题标签以替换原件,然后替换下方的指示器标签。

+0

是啊...我看到了苹果的例子,我不是指后退按钮或某种默认的导航概念。 我的navigationBar中的导航标题(titleView)是一个UIButton,当点击时提供一个选择器给用户选择一些关于视图的选项。导航标题本身需要点击,我不能使用颜色来表明这一点。 但你确实给了我试图添加UILabel作为titleView而不是navigationController.view的子视图的想法。 – Adama 2015-02-10 18:07:15

0

一个简单的解决方案可以使用隐藏属性

- (void)viewWillDisappear:(BOOL)animated 
{ 
_labelCalendarMenuArrow.hidden=YES; 
}