【问题标题】:UISegmentedControl get previous selected indexUISegmentedControl 获取先前选择的索引
【发布时间】:2017-08-02 06:02:23
【问题描述】:

我有一个 UISegmentedControl,上面有一个 segmentedValueChanged 方法。 在调用此方法之前,我需要找出所选索引是什么。 如何做到这一点?

【问题讨论】:

  • 将其存储在属性中,或子类 UISegmentedControl 并在选择段时覆盖该方法并在那里更新存储的值

标签: ios uisegmentedcontrol


【解决方案1】:

使用此功能:

@property (nonatomic, assign) NSInteger oldSegmentedIndex;
@property (nonatomic, assign) NSInteger actualSegmentedIndex;
.......

- (void)viewDidLoad
{
    .......
    self.oldSegmentedIndex = -1;
    self.actualSegmentedIndex = self.segmentedControl.selectedSegmentIndex;
    .......
}
.......
- (IBAction)didSegmentedValueChanged:(id)sender
{
    //Do whatever you want
    self.oldSegmentedIndex = self.actualSegmentedIndex;
    self.actualSegmentedIndex = self.segmentedControl.selectedSegmentIndex;
}

【讨论】:

    【解决方案2】:

    最好的方法是保留一个变量来保存最后选择的索引。然后你只需在需要时检查它的价值

    【讨论】:

      【解决方案3】:

      键值观察还有一个不错的解决方案。 Swift 3 的代码如下:

      class SegmentedControl: UISegmentedControl {
      
          private(set) var previousSelectedSegmentIndex: Int?
      
          override func willChangeValue(forKey key: String) {
              if key == #keyPath(selectedSegmentIndex) {
                  previousSelectedSegmentIndex = selectedSegmentIndex
              }
              super.willChangeValue(forKey: key)
          }
      
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-09-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-12
        • 2010-09-20
        • 2018-02-19
        • 1970-01-01
        相关资源
        最近更新 更多