2011-01-24 37 views
1

我想在我的iPad應用程序中使用UINavigationController對象的內置UIToolbar對象,但我希望它顯示在視圖頂部而不是底部,這是它默認的地方。如何將內置的UINavigationController UIToolbar可靠地置於iPad視圖頂部

我也隱藏了UINavigationController對象的導航欄。

爲了使這項工作,我不得不寫下面的代碼:

navigationController.navigationBarHidden = YES; 
navigationController.toolbarHidden = NO; 
navigationController.toolbar.frame = CGRectMake(0, 0, 768, 44); 

這種解決方案有一個例外:反覆活躍,當應用程序進入後臺,併成爲中,工具欄始終重新定位在視圖的底部。

我試着將代碼從viewDidLoad移動到viewDidAppear:動畫,它仍然表現這種方式。

首先,有沒有更好的方法來解決這個問題,如果沒有,我該如何阻止工具欄被重新定位?

我也決定使用自己的UIToolbar對象,並通過自定義的Base UIViewController類'viewDidLoad將其添加到每個視圖。但是,這會導致工具欄在每個視圖被推入或彈出時進行動畫處理,因爲它實際上是視圖的一部分,這看起來似乎是「hokey」。

關於可能的解決方案的任何想法?

謝謝大家!

回答

2

它說,在文檔中根據該UINavigationController的工具欄屬性:

訪問此工具欄是爲那些希望展示從工具欄的動作片單純的客戶提供。您不應該直接修改UIToolbar對象。

這有點hackish的,但你可以做一個UIToolbar自己,直接將它添加到窗口(即在導航控制器)。

+0

天哪,有時候是最簡單的東西......我不敢相信我沒有想到這件事!我不認爲這是'哈克',看起來很正確。謝謝! – 2011-01-25 15:47:19

-1

與一個UINavigationController使用時,工具欄的功能有限。它僅提供了一種便捷的方式來管理工具欄中的操作表。

從文檔:「訪問此工具欄僅適用於想要從工具欄呈現操作表的客戶端,不應直接修改UIToolbar對象。

我將使用的解決方案是使用便捷方法創建UIView的子類,以管理您的動作表和您需要的任何其他自定義功能。該自定義視圖可以在UINavigationController中的所有視圖之間共享,並放置在父視圖中的任何位置。這將使您可以最終控制您的自定義頂級放置工具欄。

1

您可以使用下面的類別修改UIToolbar類以實現您的目標。

@implementation UIToolbar (setCenter) 

-(void)setCenter:(CGPoint)center 
[super setCenter:CGPointMake(384, 22)]; 
} 
@end 
+0

哈克解決方案! – reedjsmith 2011-01-25 15:29:12

相關問題