NSUndoManagerを使ってみる
気づいて無かったNSUndoManagerという物
試行錯誤してUndoRedo機能を持たせようとしていましたが
実際あったんですね、NSUndoManagerというものが・・・
説明も少ないし理解しにくかったですが現状のUndoManagerもどきで詰まっていたので
調べて使ってみる事にしました。
戻る、進む動作を登録する
NSUndoManagerの使い方を大雑把に説明すると、Undoの削除手順を登録するだけです。
そんな簡単ならと思いましたが実際やってみると結構めんどうでした。
これが登録コードになります。何をしているかと言うと
下の_addContentsで動作の登録なんですが、これ_addContentsの中で削除手順である
_removeContentsを呼んでるんですよね。
そして上の_removeContentsにも同様に_addContentsが呼ばれています。
このお互いを打ち消し合うような動作を理解しないと使えません。
そして実際のボタンを押した時の動作をするコードは
下の[self _checkUndoRedo]はボタンのチェックなので実際の動作は
[_undoManager undo]だけです。
面倒なのは削除動作手順と生成動作手順を登録する事ですが、慣れてしまえば
簡単に使えるようになるものかもしれません。