【问题标题】:maintaining selection in UISegmentedControl在 UISegmentedControl 中维护选择
【发布时间】:2011-07-03 00:48:15
【问题描述】:

我可以保持 UISegmentViewControl 段的选定状态吗? 即即使用户选择另一个段,也可以保持一个段显示为选中状态? 我似乎在任何地方都找不到任何可以做到这一点的东西!

【问题讨论】:

    标签: iphone objective-c xcode


    【解决方案1】:

    这是不可能的。 (见How can I enable multiple segments of a UISegmentedControl to be selected?。)

    您可以尝试类似this code 来提供类似的功能。

    【讨论】:

      【解决方案2】:

      我找到了解决这个问题的方法。我在每个段后面放置了深色图像并将其隐藏属性设置为 true。然后我减小了 uisegmented 控件的 alpha 值。然后在代码中单击段时我打开了可见性相应地打开或关闭,因此多个段显示为选中

      【讨论】:

        【解决方案3】:

        另一种解决方案可能是使用类别:

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

        这样做,原则上您可以访问 UISegmentedControl 的私有成员变量。特别是,您可以访问保存按钮段的数组,您可以通过覆盖 setSelectedSegmentIndex:selectedSegmentIndex: 来根据需要对其进行操作。但是,由于各种原因,仍不应直接访问声明为私有的属性,请参阅@ 987654321@。正如那里所建议的那样,您宁愿滥用 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,我不太确定这是否真的是一种有效的方法。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-07-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-26
          • 2023-03-19
          • 1970-01-01
          相关资源
          最近更新 更多