在UISegmentedControl中维护选择

3

我能否保持UISegmentViewControl分段控件的选定状态?例如,即使用户选择了另一个分段,也可以保持某个分段处于选定状态?但我似乎无法找到任何能够实现这一点的内容!

3个回答

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

这对我来说有效。但是,既然我现在阅读了此讨论,我不太确定这是否真的是一个有效的方法。


0
我找到了一个解决方法。我在每个分段后面放置了一张深色图片,并将它们的隐藏属性设置为true。然后我降低了uisegmented控件的alpha值。在代码中,当点击一个分段时,我根据需要打开或关闭其可见性,这样多个分段就会显示为选定状态。

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接