0

UISegmentedControlをさまざまな方法でスタイル設定する必要があるため、サブクラスを作成しました。

@interface MYSegmentedControl : UISegmentedControl
@end

[[MYSegmentedControlの外観]...]を使用してコントロールのスタイルを設定できます。MYSegmentedControlでセグメントを無効にできないことを除いて、すべてが正常に機能しているようです(選択したセグメント、タイトルなどを設定)。

以下のコードスニペットを見ると、*segwayと*segwayTwoの両方のセグメント0を無効にする必要があります。ただし、これは*segwayTwoの場合のみです。すべてのセグメントが*segwayに対して有効になっています。これは、UISegmentedControlのサブクラスにすぎません。

MYSegmentedControl *segway = [[MYSegmentedControl alloc] initWithFrame:CGRectMake(10, 10, 100, 30)];
[segway insertSegmentWithTitle:@"A" atIndex:0 animated:NO];
[segway insertSegmentWithTitle:@"B" atIndex:1 animated:NO];
[segway insertSegmentWithTitle:@"C" atIndex:2 animated:NO];

segway.selectedSegmentIndex = 1;
[segway setEnabled:NO forSegmentAtIndex:0];
[segway setEnabled:YES forSegmentAtIndex:1];
[segway setEnabled:YES forSegmentAtIndex:2];

[myTableCell addSubview:segway];

UISegmentedControl *segwayTwo = [[UISegmentedControl alloc] initWithFrame:CGRectMake(125, 10, 100, 30)];
[segwayTwo insertSegmentWithTitle:@"X" atIndex:0 animated:NO];
[segwayTwo insertSegmentWithTitle:@"Y" atIndex:1 animated:NO];
[segwayTwo insertSegmentWithTitle:@"Z" atIndex:2 animated:NO];

segwayTwo.selectedSegmentIndex = 1;
[segwayTwo setEnabled:NO forSegmentAtIndex:0];
[segwayTwo setEnabled:YES forSegmentAtIndex:1];
[segwayTwo setEnabled:YES forSegmentAtIndex:2];

[myTableCell addSubview:segwayTwo];

「setEnabled:NO ...」がMYSegmentedControlで抑制されているように見える理由を誰かが知っていますか?それを「通常の」UISegmentedControlのように動作させる方法を理解できますか?

前もって感謝します!

4

1 に答える 1