2015-02-10 36 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; 
}