2013-01-22 146 views
0

我必須創建具有多個子視圖一個UIViewController。要切換到我加了分段控制的所有子視圖..屏幕看起來是這樣的..如何隱藏UItoolbar上分段點擊

enter image description here

在我已經添加了一個UIToolbar,使用這行代碼第二視圖..

toolbar = [UIToolbar new]; 
    toolbar.barStyle = UIBarStyleDefault; 
    [toolbar sizeToFit]; 
    toolbar.frame = CGRectMake(0, 0, 800, 40); 

    UIBarButtonItem *filterByClass = [[UIBarButtonItem alloc] initWithTitle:@"A" style:UIBarButtonItemStyleBordered target:self action:@selector(goToFilteredByClass:)]; 

    UIBarButtonItem *spacer = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil]; 

    NSArray *buttonItems = [NSArray arrayWithObjects:filterByClass, spacer, nil]; 
    [toolbar setItems:buttonItems animated:NO]; 

所以屏幕看起來像這樣..

enter image description here

當我回到A段,這裏是我的屏幕..

enter image description here

然後數據通過工具欄覆蓋..我想是因爲A段沒有一個工具欄將其刪除..有沒有辦法解決這個問題..?

感謝,

鏈接

回答

1

設置在您的視圖控制器的作用,並讓您分段控制呼叫行動時,它的「數值改變」事件觸發。

從0開始,控件的段被編號爲一個數組。在你的動作方法中,你測試你感興趣的片段(在這種情況下,片段0)並顯示或隱藏工具欄。如果你喜歡滑動動畫,你也可以在屏幕外動畫。

如果您不擔心稍後離開工具欄以供重用,則可以在您的操作方法中使用removeFromSuperview;但如果使用此方法,則不會獲得動畫。使用核心動畫隱藏它

簡單的例子:

-(IBAction)segmentedControlValueChanged:(UISegmentedControl *)sender 
{ 

    switch (sender.selectedSegmentIndex) { 
     case 0: 
     // A was pressed, so hide the toolbar 
     [UIView animateWithDuration:0.2 
       animations: ^(void) { toolbar.alpha = 0.0; }]; 
     break; 
     case 1: 
     // B was pressed so show the toolbar 
     [UIView animateWithDuration 0.2 
       animations: ^(void) { toolbar.alpha = 1.0; }]; 
     break; 
    } 
} 
+0

是的,它的工作原理..謝謝.. @petermorris你是最好的.. – Link