2011-01-27 108 views
0

我想顯示一個UISearchBar來代替UINavigationItem右側顯示的按鈕。我正在使用此代碼:如何在UINavigationItem的右側顯示UISearchBar?

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    UISearchBar *searchBar = [[UISearchBar alloc] init]; 
    UIBarButtonItem *navRight = [[UIBarButtonItem alloc] initWithCustomView:searchBar]; 
    [[self navigationItem] setRightBarButtonItem:navRight]; 

    [searchBar release]; 
    [navRight release]; 
} 

但是,顯示的搜索欄只有幾個像素寬。我需要把它擴大。

我該怎麼做呢?這是否可能?

+0

您可以通過使用CGFrame定義一個框架來更改UIBarButtonItem的寬度,或者如果可能的話添加使用IB – Robin 2011-01-27 07:21:13

回答

2

您需要在某個時刻設置UISearchBar的幀。

e.x.

UISearchBar *searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, 200, 20)]; 

編輯:關於你下UISearchBar看到UISearchBar

按鈕-Y的事情下的按鈕式的神器實際上是UISearchBar的背景元素,搜索沒有結果酒吧重疊UIBarButtonItem。由於似乎沒有一種很好的方法可以隱藏這個(我希望有人可以一起來糾正我),所以我只能指出你的方向,即伴隨着SDK版本依賴的常見危險hack,不雅,並有可能導致更多的頭痛。

編輯2:另一個潛在的解決方案

您還可以設置您的UISearchBar的框架的高度,以44(導航欄的高度),然後背景應該與導航欄很好地融爲一體。基於this最近看到的SO帖子。

+0

謝謝!堆棧溢出岩石。有什麼辦法隱藏它下面的按鈕? – Ovesh 2011-01-27 07:31:25