2011-11-02 81 views
2

我想通過隱藏工具欄,更改項目(按鈕,固定空間等)並再次顯示它來更改我的UIToolbar中的項目。NavigationController UIToolbar更改項目

我目前在我的UIToolbar上有一個按鈕,按下後,通過調用[[self navigationController]setToolbarHidden:YES animated:YES];隱藏工具欄。

如何設置這些項目?是否可以使用接口生成器,還是需要對它們進行硬編碼?

+0

它使用IB原因很明顯是不可能的。您需要將對象添加到UIToolbar,將它們設置爲null(隱藏它們時),並在您想再次顯示時將它們重新分配給UIToolbar。 – Legolas

回答

1

您可以爲工具欄設置新項目是這樣的:

[toolbar setItems:<new_items_array> animated:YES]; 

它也將動畫的改變,所以你可能不需要隱藏,並再次顯示它,這不是一般的好UI做法。

+0

我使用這種方法,我可以刪除工具欄項目,但無法讀取它們。爲什麼是這樣? – blake305

2

這是非標準行爲,但應該是可行的。您可能會考慮不是去除現有工具欄中的新按鈕並添加新按鈕,而是創建一個不同的工具欄,使其淡入。這將使編碼/調試更容易。一般來說,它只需要較少的「混亂」。

爲了達到所期望的行爲,你可以這樣做:

float animationDuration = .25; 

[UIView animateWithDuration:animationDuration animations:*{ 
    // Remove the old toolbar. 
    self.oldToolbar.alpha = 0; 

    // Fade the new toolbar in. 
    self.newToolbar.alpha = 1; 
}]; 

本示例假設您已經加載的其他工具欄進入newToolbar財產。讓我知道你是否需要進一步的幫助或解釋。

+0

我將如何將新的工具欄放入視圖中? – Baub

0

奇數一個有點...這是一個有點哈克,但應該是完美的罰款:

[UIView animateWithDuration:0.5f animations:^{ 
    // Remove the old toolbar. 
    self.oldToolbar.alpha = 0; 

} completion:^(BOOL finished) { 
    //add code to change toolbar. 
    [UIView animateWithDuration:0.5f animations:^{ 
     // Fade the new toolbar in. 
     self.newToolbar.alpha = 1; 
    }]; 
}];