1

ラジオスタイルで3つのボタンを必要とするUIToolbarがあります。つまり、3つのうち、一度に押すことができるボタンは1つだけです。ドキュメントでは、widthプロパティのクラス参照定義で無線UIBarButtonItemsを設定する可能性について言及しています。

このプロパティ値が正の場合、画像とタイトルを組み合わせた幅は固定されます。値が0.0または負の場合、アイテムは画像とタイトルを組み合わせた幅を合わせて設定します。スタイルが無線モードを使用している場合、このプロパティは無視されます。デフォルト値は0.0です。

ただし、UIKitフレームワークリファレンスで「radio」を検索しましたが、ラジオスタイルのUIBarButtonItemsについての言及は見つかりませんでした。代わりにラジオインターフェイスにTabBarを使用できることは知っていますが、TabBarは私のUIの目的(通常のボタン+ラジオボタン)と完全には一致していません。カレンダーアプリは無線スタイル(リスト、日、月)でUIBarButtonItemsを使用しているので、これはAPIのどこかにあり、HIGによって承認されているようです。これはどこかに隠れていますか、それともカスタムビューでUIBarButtonItemsを作成する必要がありますか?

4

3 に答える 3

7

UISegmentedControlはあなたが望むものです。ツールバーの外では別のスタイルであるため、InterfaceBuilderに隠れているようなものです。

通常のスタイル:

通常のセグメント化された制御

ツールバーの同じこと:

バーセグメント制御

その動作には2つのオプションがあります。タップしたときの瞬間的なハイライト、または必要なラジオスタイルの動作です。これは、属性インスペクターの「モーメンタリ」チェックボックスで設定できます。

セグメント化された制御属性

于 2009-11-14T02:06:57.043 に答える
1

UISegmentedControlを試すことを検討しましたか?一度に1つのセグメントのみが「押される」ように設定できます。

于 2009-11-14T01:56:44.117 に答える
0

objcでこれをリアルタイムで行う必要がある場合

  1. ラジオボタンの選択で攪拌の配列を作成します
  2. UISegmentedControlを作成してUIBarButtonItemに配置します。
  3. そのUIBarButtonItemをnavigationItemに追加します

私のために働いた。コードは以下のとおりです

NSArray *itemArray = [NSArray arrayWithObjects: @"One", @"Two", @"Three", nil];
UISegmentedControl *segmentedControl = [[UISegmentedControl alloc] initWithItems:itemArray];
segmentedControl.frame = CGRectMake(35, 200, 250, 50);
segmentedControl.segmentedControlStyle = UISegmentedControlStylePlain;
segmentedControl.selectedSegmentIndex = 1;

// Uncomment this part if you need to do something when ratio state is selected. Also paste the function at the end of this post somewhere in your class.
// [segmentedControl addTarget:self   action:@selector(pickOne:) forControlEvents:UIControlEventValueChanged];

UIBarButtonItem *bbi= [[UIBarButtonItem alloc] initWithCustomView:segmentedControl];
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:segmentedControl];
[segmentedControl release];


/* 
//and paste this function somethere in your class. It prints the label in debug terminal
- (void) pickOne:(id)sender{
UISegmentedControl *segmentedControl = (UISegmentedControl *)sender;
NSLog(@"%@", [segmentedControl titleForSegmentAtIndex: [segmentedControl selectedSegmentIndex]]);
} 
*/

私はこの(私のものではない)投稿http://howtomakeiphoneapps.com/here-is-how-you-use-the-segmented-control-uisegmentedcontrol/129/からいくつかのコードを使用しました

于 2012-02-06T14:59:35.093 に答える