2014-01-19 148 views
1

我有一個按鈕,當按下時應該隱藏狀態欄並將文本放在它的位置。然後,按下按鈕時,標籤將被從view中刪除,狀態欄將重新出現。第一部分工作 - 狀態欄被隱藏並且標籤被放置在view上,問題是當我再次按下按鈕時(刪除文本並放回狀態欄)。狀態欄重新出現,但標籤未從view中刪除。爲了實現這一點,我使用了一個if語句。我也使用removeObjectFromSuperView這是不工作的東西。removeObjectFromSuperView不與if語句一起工作

下面是代碼:

- (IBAction)buttonPressed:(id)sender { 

UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 320, 21)]; 

label.text = @"This is a test"; 

[label setFont:[UIFont systemFontOfSize:13]]; 

label.textAlignment = NSTextAlignmentCenter; 



if (hidden == NO) { 

    [UIApplication sharedApplication].statusBarHidden = YES; 

    [self.view addSubview:label]; 

    hidden = YES; 

}else if (hidden == YES) { 

    [UIApplication sharedApplication].statusBarHidden = NO; 



    [label removeFromSuperview]; 

    hidden = NO; 

} 

} 

感謝 編輯:這裏的問題是什麼樣子: enter image description here

回答

1

你需要跟蹤buttonPressed:方法之外標籤。現在,您每次按下按鈕時都會創建一個新標籤,然後刪除相同的標籤。

因此,例如:

@interface MyViewController() { 
    UILabel *label; 
} 

- (IBAction)buttonPressed:(id)sender { 
    if (hidden == NO) { 

     [UIApplication sharedApplication].statusBarHidden = YES; 

     label = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 320, 21)]; 
     label.text = @"This is a test"; 
     [label setFont:[UIFont systemFontOfSize:13]]; 
     label.textAlignment = NSTextAlignmentCenter; 

     [self.view addSubview:label]; 

     hidden = YES; 

    } else if (hidden == YES) { 

     [UIApplication sharedApplication].statusBarHidden = NO; 

     [label removeFromSuperview]; 
     label = nil; 

     hidden = NO; 
    } 
} 

您還可以設置label = nil;一旦你從超級視圖中刪除它。

+0

我只是做了你說的話,我仍然有同樣的問題,謝謝。 – user3186310

+0

@ user3186310我擴展了'buttonPressed:'方法。試試看。 – Matt

+0

它的工作!謝謝,真的很感激它 – user3186310