2010-12-11 16 views
8

のトップバーにUISegmentedControlのどこかを埋め込みたいと思います。UINavigationBar/Itemに埋め込まれたUISegmentedControl

UIBarButtonItemに埋め込み、左または右のbarButtonItemとして設定しても問題ありません。

iPhoneの画面の不動産を扱う際には、このアプローチを理解することができます。私はiPadのPopoverでこれをやっていますし、トップバーには垂直スペースがたくさんあります。 segmentedControlを左または右のbarButtonItemとして追加すると、セグメントボタンのテキストが表示されないように縮小され、「完了」ボタンの幅などになります。 navigationItem TitleViewは、右端まで表示されますが、テキストを表示できる3セグメントコントロールよりもさらに縮小されています。

ポップオーバーコンテンツを囲むUINavigationControllerの中心に、UISegmentedControlを追加するにはどうすればよいですか。

誰かが私を助けてくれることを願っています:)前もって感謝します。

答えて

21

なぜコントロールをポップオーバータイトルバーに配置する必要がありますか? iPadには、スクリーンの不動産がはるかに多くあり、それを下のビューに入れることを検討します。

- EDIT -

自分で試してみました。ここでポップオーバーコントローラを設定するコードは次のとおりです。ここで

- (IBAction) showPopover: (id) sender 
{ 
    TestController *testController = [[TestController alloc] initWithStyle: UITableViewStylePlain]; 
    UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController: testController]; 
    UIPopoverController *controller = [[UIPopoverController alloc] initWithContentViewController: navController]; 
    [controller presentPopoverFromBarButtonItem: sender permittedArrowDirections: UIPopoverArrowDirectionAny animated: YES]; 
    controller.delegate = self; 
    [testController release]; 
    [navController release]; 
} 

はTestControllerの実装です:ここで

- (id) initWithStyle: (UITableViewStyle) style 
{ 
    if ((self = [super initWithStyle: style])) { 
     UISegmentedControl *ctrl = [[UISegmentedControl alloc] initWithFrame: CGRectZero]; 
     ctrl.segmentedControlStyle = UISegmentedControlStyleBar; 
     [ctrl insertSegmentWithTitle: @"One" atIndex: 0 animated: NO]; 
     [ctrl insertSegmentWithTitle: @"Two" atIndex: 0 animated: NO]; 
     [ctrl insertSegmentWithTitle: @"Three" atIndex: 0 animated: NO]; 
     [ctrl sizeToFit]; 
     // Any of the following produces the expected result: 
     self.navigationItem.titleView = ctrl; 
     //self.navigationItem.leftBarButtonItem = [[[UIBarButtonItem alloc] initWithCustomView: ctrl] autorelease]; 
     [ctrl release]; 
    } 
    return self; 
} 

は結果ではありません:

alt text alt text

にはありますセグメント化されたコントロールにsizeToFitを送信する以外に私のコードのトリック。これはあなたのために働きますか?

+0

こんにちは、それは文脈上バーに属し、内容には属しません。 Appleが選択した電子メールの中で、メールアプリケーションに「次のメッセージ、上矢印/下矢印」セグメント制御を入れてしまったかどうかは分かりません。または、リストをソートするためのセグメント化されたコントローラがリストに配置されている場合。 – RickiG

+0

を参照してください。私は作業コードとスクリーンショットで私の答えを編集しました。私はこれが役立つことを願っています – Costique

+0

ありがとうございます:)それは素晴らしいです、それはすべての違いを作るsizeToFitの呼び出しです。ありがとうございました。 – RickiG

関連する問題