无法从UINavigationController.view中删除UILabel

时间:2015-02-10 17:34:38

标签: ios uinavigationcontroller uilabel

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

    _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;
}

2 个答案:

答案 0 :(得分:0)

一个简单的解决方案可以是使用HIDDEN属性

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

答案 1 :(得分:-1)

你在这里想要做的事情是相当可怕的,在父导航控制器的视图中添加一个视图是违反所有意义的。

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

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