こんにちは私はこの問題を解決するために3週間試しました。私がしようとしているのは、配列から3つの部分のセグメントを作成し、特定の位置のビューに表示し、 "OFF"フラグがセットされているときにビューから削除することです。セグメントの削除以外はすべて動作します。それは(pickOne)と交信し、ラベルにセグメント文字を表示します。私が働くことができないのは、setHidden:YES、またはremoveAllSegmentsのいずれかです。どんな助けもありがとう。ここに私のコードです。SegmentContollerの非表示または移動
- (void) showSegment {
int x = 192;
int y = 212;
int w = 125;
int h = 25;
SegUnit1 = @"A";
SegUnit2 = @"B";
SegUnit3 = @"C";
threeSegs = [NSArray arrayWithObjects: SegUnit1, SegUnit2, SegUnit3, nil];
segSize = [NSArray arrayWithArray:threeSegs];
UISegmentedControl *heightSC = [[UISegmentedControl alloc] initWithItems:segSize];
if ([segmentState_height isEqualToString:@"ON"]) {
NSLog(@"segmentState_height = %@",segmentState_height);
heightSC.frame = CGRectMake(x, y, w, h);
heightSC.segmentedControlStyle = UISegmentedControlStyleBar;
heightSC.selectedSegmentIndex = -1;
[heightSC addTarget:self
action:@selector(pickOne:)
forControlEvents:UIControlEventValueChanged];
[self.view addSubview:heightSC];
[heightSC release];
} else if ([segmentState_height isEqualToString:@"OFF"]) {
NSLog(@"segmentState_height = %@",segmentState_height);
[heightSC setHidden:YES]; // NSLog showing "OFF" but segment will not hide.
[heightSC removeAllSegments]; // NSLog showing "OFF" and segment is suppose to dismantle and does not.
}
}
は、私は私が「ない」の作成と同じ機能で削除する必要があることを今知っているし、これを修正するにはヒントを与えましたが、私は先端を使用する方法がわかりません。
ここに提案されたものがあります。
同時に、作成と非表示の両方を試みているので、あなたの方法はちょっと混乱しています。だからあなたはそれを別々の方法に分割することを検討するかもしれません。一般的に
、それはこれらの線に沿って次のようになります。
コード:
if ([self theControlProperty] == nil)
{
UISeg... *theControl = [[UISeg alloc] ....];
[self setTheControlProperty:theControl];
...
}
if (shouldHideTheControl)
{
[[self theControlProperty] setHidden:YES];
}
任意の助けいただければ幸いです。
私はそれを試してみた、あなたはあなたのコードでクラッシュアウトとスーパービューからサブビューを削除することはできません。これを行う方法はありますが、ビュー全体が削除されます。私がしたいのは、それを取り除かないセグメントを隠すことだけです。あなたの応答に感謝します。 – hodji