你好,我已經嘗試了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];
}
任何幫助,將不勝感激。
我已經試過了,用你的代碼,你不能刪除的SuperView從一個子視圖了崩潰。有辦法做到這一點,但它會刪除整個視圖。我想要做的就是隱藏段不刪除它。感謝您的迴應。 – hodji 2011-02-01 18:44:30