目的:由NSUndoManager來實作Undo/redo功能
Step 1. 畫面上拉三個按鈕分別為add,redo及undo,數值label,textfield
Step 2.ViewController.h
@interface ViewController : UIViewController
{
NSUndoManager *manager;
IBOutlet UITextField *txtShow;
int value;
}
@property (nonatomic ,retain) IBOutlet UITextField *txtShow;
-(IBAction)add:(id)sender;
-(IBAction)redo:(id)sender;
-(IBAction)undo:(id)sender;
-(void)addAction;
-(void)removeAction;
@end
Step 3.關聯
Step 4.ViewController.m
@synthesize txtShow;
//增加
-(IBAction)add:(id)sender {
[self addAction];
}
//重做
-(IBAction)redo:(id)sender {
[manager redo];
}
//復原
-(IBAction)undo:(id)sender{
[manager undo];
}
//增加
-(void)addAction {
value++;
[txtShow setText:[NSString stringWithFormat:@"%d", value]];
[[manager prepareWithInvocationTarget:self] removeAction];
}
//減少
-(void)removeAction{
value--;
[txtShow setText:[NSString stringWithFormat:@"%d", value]];
[[manager prepareWithInvocationTarget:self] addAction];
}
- (void)viewDidLoad
{
[super viewDidLoad];
manager = [[NSUndoManager alloc] init];
[txtShow setText:[NSString stringWithFormat:@"0"]];
}

