Здравствуйте. Я пытался решить эту проблему в течение 3 недель, и это ставит меня в тупик.То, что я пытаюсь сделать, это создать сегмент из 3 частей из массива, отобразить его в виде в определенной позиции, а затем удалить его из вида, когда установлен флаг «OFF».Все работает, кроме удаления сегмента.Он даже коммутирует с (pickOne) и отображает буквы сегмента в метке.То, что я не могу получить на работу, это либо из двух: setHidden: YES или removeAllSegments.Любая помощь будет оценена.Вот мой код.
- (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.
}
}
Теперь я знаю, что мне нужно «не» создавать и удалять в одной и той же функции, и мне дали совет по исправлению этого, но я не знаю, как использоватьtip.
вот что было предложено.
Ваш метод немного запутан, поскольку вы пытаетесь одновременно создавать и скрывать.Таким образом, вы можете рассмотреть возможность его разделения на отдельные методы.
В общем случае это будет выглядеть следующим образом:
Код:
if ([self theControlProperty] == nil)
{
UISeg... *theControl = [[UISeg alloc] ....];
[self setTheControlProperty:theControl];
...
}
if (shouldHideTheControl)
{
[[self theControlProperty] setHidden:YES];
}
Буду признателен за любую помощь