NSUndoManager を使用して元に戻す/やり直しメソッドを実装しようとしています。これについて他の質問をしましたが、まだ行き詰まっています。
現時点で私がいる場所は次のとおりです。
.h
NSUndoManager *undoManager;
@property(nonatomic,retain) NSUndoManager *undoManager;
.m
@synthesize undoManager;
[undoManager setLevelsOfUndo:99]; viewdidload:
NSNotificationCenter *dnc = [NSNotificationCenter defaultCenter];
[dnc addObserver:self selector:@selector(undoButtonTapped) name:@"undo" object:nil];
[dnc addObserver:self selector:@selector(redoButtonTapped) name:@"redo" object:nil];
- (void)resetTheImage:(UIImage*)image
{
NSLog(@"%s", __FUNCTION__);
// image = savedImage.image;
if (image != drawImage.image)
{
[[undoManager prepareWithInvocationTarget:self] resetTheImage];
image = drawImage.image ;
} else {
NSLog(@"That didn't work");
}
}
- (void)undoButtonTapped {
NSLog(@"%s", __FUNCTION__);
[undoManager undo];
}
「それはうまくいきませんでした」と出ます...
助けていただければ幸いです。何が間違っているのかがわかったら、元の質問への回答を投稿します。
- -編集 - -
次のように resetTheImage を変更しました。
- (void)resetTheImage:(UIImage*)image
{
NSLog(@"%s", __FUNCTION__);
image = savedImage.image;
if (image != drawImage.image)
{
drawImage.image = image;
savedImage.image = image;
NSLog(@"undo image");
[[self.undoManager prepareWithInvocationTarget:drawImage.image] image];
} else {
NSLog(@"same image");
savedImage.image = image;
}
}
しかし、混乱が降りかかります - 誰か (Brad?, Justin?) が、これを機能させるために必要な手順の箇条書きリストを提供してくれると助かります。例えば:
. ... に通知を追加します。トリガー通知.... 元に戻す/やり直しボタンが... を指すようにします。私が本当に構築する必要があるメソッド/関数は何ですか... ....
SOがあなたに1より多くのポイントを与えることを許可してくれることを願っています..
(私の「o」キーがぐらつくのは助けにはなりません) 昨日孫娘が生まれたのは助けになります:)))