當用戶點擊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