31歳から始める初心者のアプリ制作勉強ブログ

アプリ制作の勉強の経過や雑記などを書いていきます

NSUndoManagerを使ってみる

気づいて無かったNSUndoManagerという物

試行錯誤してUndoRedo機能を持たせようとしていましたが

実際あったんですね、NSUndoManagerというものが・・・

説明も少ないし理解しにくかったですが現状のUndoManagerもどきで詰まっていたので

調べて使ってみる事にしました。

 戻る、進む動作を登録する

NSUndoManagerの使い方を大雑把に説明すると、Undoの削除手順を登録するだけです。

そんな簡単ならと思いましたが実際やってみると結構めんどうでした。

f:id:inou-social:20140203173020p:plain

 

これが登録コードになります。何をしているかと言うと

下の_addContentsで動作の登録なんですが、これ_addContentsの中で削除手順である

_removeContentsを呼んでるんですよね。

そして上の_removeContentsにも同様に_addContentsが呼ばれています。

このお互いを打ち消し合うような動作を理解しないと使えません。

そして実際のボタンを押した時の動作をするコードは

f:id:inou-social:20140203173435p:plain

 

下の[self _checkUndoRedo]はボタンのチェックなので実際の動作は

[_undoManager undo]だけです。

 

面倒なのは削除動作手順と生成動作手順を登録する事ですが、慣れてしまえば

簡単に使えるようになるものかもしれません。