我在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;
}
答案 0 :(得分:0)
一个简单的解决方案可以是使用HIDDEN属性
- (void)viewWillDisappear:(BOOL)animated
{
_labelCalendarMenuArrow.hidden=YES;
}
答案 1 :(得分:-1)
你在这里想要做的事情是相当可怕的,在父导航控制器的视图中添加一个视图是违反所有意义的。
请阅读apple的人机界面指南,因为有一个更好的解决方案来表示标题是可点击的。 https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/MobileHIG/
如果您仍然坚持在导航栏标题标签下添加标签,则应为导航项实现titleView。在该视图中,您必须包含自己的标题标签,以替换原始标签,然后替换下方的能指标签。