2010-08-12 90 views

回答

0

我找到了一個圍繞這個的方法。我在每個段後面放置了深色的圖像,並將它們的隱藏屬性設置爲true。然後我減少了uisegmented控件的alpha值。然後在代碼中點擊段時,可見開或關,所以多段出現另一種解決方案可能會使用一個類別中選擇

0

#import <UIKit/UISegmentedControl.h> 
@interface UISegmentedControl (MultiSelect) 
@end 

這樣做,你必須在原則上獲得UISegmentedControl的私有成員變量。特別是,您可以訪問保存按鈕段的數組,通過重寫setSelectedSegmentIndex:selectedSegmentIndex:。您可以根據需要操作按鈕段。但是,由於各種原因,聲明爲私有的屬性仍然不應直接訪問,請參閱this link 。同樣如此,您可以寧願濫用KVC。所以實現可能看起來如下:

@implementation UISegmentedControl (MultiSelect) 
- (void)setSelectedSegmentIndex:(NSInteger)selectedSegmentIndex { 
    NSMutableArray *pArraySegments = [self valueForKey:@"segments"]; 
    if ((pArraySegments) && (selectedSegmentIndex >= 0) && (selectedSegmentIndex < [pArraySegments count])) { 
     UIButton *pSegment = (UIButton*)[pArraySegments objectAtIndex:selectedSegmentIndex]; 
     pSegment.selected ? (pSegment.selected = NO) : (pSegment.selected = YES); 
    } 
} 
@end 

這適用於我。但是,由於我現在閱讀this discussion,我不太確定這是否是一種真正有效的方法。