UISegmentedControl获取先前选择的索引

时间:2013-10-30 10:24:45

标签: ios uisegmentedcontrol

我有一个带有segmentedValueChanged方法的UISegmentedControl。 我需要在调用此方法之前找出所选索引的内容。 怎么做?

3 个答案:

答案 0 :(得分:9)

使用此功能:

@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;
}

答案 1 :(得分:3)

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

答案 2 :(得分:0)

键值观察也有一个很好的解决方案。这里是 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)
    }

}