web-dev-qa-db-ja.com

ナビゲーションバーのUISegmentedControlと[戻る]ボタン

UISegmentedControlがあるべき場所にプログラムでtitleViewをナビゲーションバーに追加しています。しかし、 Apple docstitleViewで述べているように、leftBarButtonItemがnilでない場合、このプロパティは無視されます。

でも、戻るボタンも欲しいです。彼らが彼ら自身のイメージで説明したように!

enter image description here

以下は、UISegmentedControlを追加するコードです。

self.navigationItem.leftBarButtonItem = nil;
UISegmentedControl *statFilter = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"Filter_Personnal", @"Filter_Department", @"Filter_Company", nil];
[statFilter setSegmentedControlStyle:UISegmentedControlStyleBar];
self.navigationItem.titleView = statFilter;

戻るボタンと一緒にUISegmentedControlを追加する別の方法もありますか?

ありがとうございました。

15
Isuru

これを試して

この行を削除します---> self.navigationItem.leftBarButtonItem = nil;

代わりにこれを追加してください

UISegmentedControl *statFilter = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"Filter_Personnal", @"Filter_Department", @"Filter_Company", nil]];
[statFilter setSegmentedControlStyle:UISegmentedControlStyleBar];
[statFilter sizeToFit];
self.navigationItem.titleView = statFilter;

唯一の変更点は、この行を追加したことです。

[statFilter sizeToFit];

お役に立てれば !!!

23
arun.s

UIBarButtonItemになる可能性のあるカスタムビューを使用してUISegmentedControlを作成できます。

次のようなものが機能する可能性があります。

//create segmented control with items
UISegmentedControl *segmentedControl = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"One", @"Two", nil]];

//create bar button item with segmented control as custom view
UIBarButtonItem *barButtonItem = [[UIBarButtonItem alloc] initWithCustomView:segmentedControl];

//add segmented control bar button item to navigation bar
[[[self navigationController] navigationItem] setRightBarButtonItem:barButtonItem];

私はこれをテストしていませんが、あなたが必要とするものの正しい線に沿っているはずです。

3
CaptainRedmuff