0

我正在構建一個由UINavigationController控制多個屏幕的大型分層iPhone應用程序。其中一個屏幕能夠以兩種不同的格式顯示內容(我使用IB創建的UITabBar在它們之間切換),並且我構建了一個視圖,該視圖添加了基於活動主體的子視圖(從nib文件加載)標籤。從子視圖的控制器中隱藏超級視圖控制器的UINavigatonBar?

這些子視圖中的每一個都包含一個搜索欄,當它被點擊時需要將導航欄推開。導航欄只能從子視圖的superview控制器訪問,所以我已經向每個子視圖的控制器添加了superview的控制器類的前向聲明。當子視圖被加載時,其「superViewController」屬性被設置。

通常,每個搜索欄會根據需要自動隱藏導航欄,但我需要自己實現此功能,因爲欄位於搜索欄上方的視圖中。

-(void)hideNavBar { 
    [self.navigationController setNavigationBarHidden:TRUE animated:TRUE]; 
} 

和我也曾嘗試:我曾嘗試通過在

- (void)searchDisplayController:(UISearchDisplayController *)controller willShowSearchResultsTableView:(UITableView *)tableView 

方法,其中 「hideNavBar」 定義使用

[self.superViewController hideNavBar]; 

在superViewController.m如下這樣做直接隱藏吧

[self.superViewController.navigationController setNavigationBarHidden:TRUE animated:TRUE]; 

在這兩種情況下,酒吧都沒有任何改變。我必須告訴導航欄進行更新嗎?有沒有更好的方法來實現我想要的功能?

我知道向前聲明是否正常工作,因爲我可以使用預先

NewViewController *newViewController = [[NewViewController alloc] initWithNibName:@"NewView" bundle:nil]; 
[self.superViewController.navigationController pushViewController:newViewController animated:YES]; 
[newViewController release]; 

由於推新視圖到navigationViewController, 朱利安Ceipek

如果它的事項,導航欄被設置爲半透明的,以便子視圖在欄下方。

+0

和@cone你有問題的答案嗎?如何解決這個問題呢?你可以幫我嗎?這是我的問題: - http://stackoverflow.com/questions/6381161/how-to-hide-superview-navigationbar-in-subview-in-ipad – 2011-06-17 07:33:34

回答

0

您是否嘗試過使用模態視圖控制器?根據每個選擇,如果將模式視圖控制器推到視圖上,它將自動隱藏導航欄。

http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/ModalViewControllers/ModalViewControllers.html

本質上,它是指是指被用於暫時接受用戶數據的畫面。如果你實現了這個功能,它會在導航欄進入視圖時自動隱藏,因爲它由視圖控制器擁有,並且不會被推到導航控制器堆棧上。

+0

我想過使用類似的東西,但它仍然不會據我所知,解決我的問題。我希望導航欄保持在屏幕上,以便用戶可以瀏覽應用程序。我只希望酒吧暫時消失,而用戶正在與搜索框或滾動進行交互。 我也不太願意使用基於Apple指南的模式視圖控制器,因爲我需要用戶能夠在視圖層次結構中訪問和修改比在我的問題中提到的超級視圖更低的視圖。 – 2011-06-14 18:35:34

+0

如果您希望導航欄保留在屏幕上,爲什麼不將新視圖放到navigationController堆棧上?根據按下哪個按鈕,您可以推送相應的視圖,並顯示/隱藏該視圖控制器的導航欄。它比試圖操縱superview的navigationBar更乾淨。 – cone 2011-06-16 04:17:38

+0

謝謝!我得到它使用這裏描述的方法工作:http://stackoverflow.com/questions/410471/how-can-i-pop-a-view-from-a-uinavigationcontroller-and-replace-it-with-other -in/1787323#1787323 這個解決方案唯一令人討厭的事情是,它需要一個單獨的標籤欄,不會在每個視圖上切換其所選項目。 – 2011-06-16 15:02:23

相關問題