2012-01-18 12 views
3

ナビゲーションバーの右側にsearchBarを配置したいiPadアプリケーションを作成しました。目的のCのUINavigationBarの右側にあるUISearchBar

ナビゲーションバーに検索バーを追加すると、ナビゲーションバーの中央に配置されます。真ん中ではなく、私は特定のイメージを表示したい。

どうすればこの問題を解決できますか?ここで

は私のコードスニペット、上記のコードでは

[self.navigationController.navigationBar setTintColor:[[UIColor alloc]initWithRed:150.0/255 green:22.0/255 blue:22.0/255 alpha:0.0]]; 

UIImage *image = [UIImage imageNamed:@"logo(1).png"]; 
UIImageView *imageView = [[UIImageView alloc] initWithImage:image]; 
[self.navigationItem setTitleView:imageView]; 

self.navigationItem.titleView = sBar; 

[titleView release]; 

ですが、私は私のシミュレータで(中間に位置)のみ検索バーを見ることができています。

+0

まず、なぜあなたは 'titleView'を解放しますか?おそらく 'imageView'をリリースする必要があります。次に、 'sBar'を' self.navigationItem.titleView'に追加すると、バーだけが表示されます。画像を見たい場合は、これを行う必要があります: 'self.navigationItem.titleView = imageView'。 –

+0

検索バーの場合、[UIBarButtonItem reference](http://developer.apple.com/library/ios/#documentation/uikit/reference/UIBarButtonItem_Class/Reference/Reference.html)を見てみるとよいでしょう。たぶんUIView(UISearchBarのような)を渡してナビゲーションバーにそのボタンを 'self.navigationItem.rightBarButtonItem'として置くことが可能でしょう –

答えて

12

これを試してみてください:

UISearchBar *searchBar = [[[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, 100, 40)] autorelease]; 
searchBar.backgroundImage = [[[UIImage alloc] init] autorelease]; 
self.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] initWithCustomView:searchBar] autorelease]; 

あなたは常にフレームを変更することができます。 backgroundImageのプロパティはiOS 5でのみ利用可能です。iOS 4.xの背景を取り除くための代替オプションを検索する必要があります。

これが機能するかどうか教えてください。

+0

それはうまくいきます、ありがとうございます... – GAMA

+0

あなたはどのように知っているのですか?どうもありがとう。 – virtualnobi

0

試してみてください。

self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:sBar]; 
0

私はこれで周りにねじ込まれて、私はあまりにも物事が(次の検索バーにボタンのカップルを追加した後に)適切に整列することができませんでした。

誰かがより良い解決策を提案するまで、そのビュー内でNavigationBar([self.navigationController setNavigationBarHidden:YES])を隠し、必要なすべてのUI要素でUIViewに置き換える方がよいでしょう。私はそのような行動がより予測可能だと思います。

関連する問題