当用户点击UISegmentedControl
并更改选定哪个段时,我想执行一些验证。如果验证失败,我想'撤消'他们的选择,并重新选择他们以前选择的项目。使用UISegmentedControl撤消选择
这样做最简单的方法是什么?我想,我需要这样的东西
- (BOOL) segment:(UISegmentedControl *)seg shouldSelectSegmentAtIndex:(NSInteger)newIndex`
,但我一直在寻找在Apple Docs,但我没有看到这样的事情 - 我真的没有看到在它will
在所有东西。我需要创建一个类别或子类来做到这一点,或者我只是想念它吗?
我想我可以添加一个ivar,在它被验证之后保存所选的段索引,然后在验证失败时调用[mySegmentedControl setSelectedSegmentIndex:myIvar];
,或者当它通过时调用myIvar = [mySegmentedControl selectedSegmentIndex];
,但感觉有点混乱。如果我在同一个屏幕上有很多分段控件,这也有点痛苦。我相信如果我确实创建了自己的子类,那么我将不得不这样做。
编辑: 我用过的其他编程语言原生支持'撤销'功能,而程序员不必自行实现撤销。我期待着看看有没有人知道Objective-C这样的东西。如果它不存在,是否有人知道除了我上面描述的伊娃法之外还有更好的实现方法?
是的这是非常接近我所寻找的,我只是寻找一种方式来做到这一点,也许是更优雅一点。我编辑了我的OP,试图让它更加清晰我正在寻找的东西。 – GeneralMike
你看过NSUndoManager吗? –
我没有,我会在这里读一些[这里](https://developer.apple.com/library/mac/documentation/cocoa/reference/foundation/Classes/NSUndoManager_Class/Reference/Reference.html)。乍一看,这可能是我正在寻找的。 – GeneralMike