• ベストアンサー

objective-c undo機能について

objective-cでiPhone用の簡易お絵描きアプリのかいはつを行っています。 undo,redo機能を付け加えたいと考えているのですが、調べてみても理解に至りませんでした。 具体的には、まず、undo用のUIButtonを作成し、線を描き、その操作を取消したい時に、そのUIButtonを押せば、操作の取り消しが出来る。 といった感じです。 どなたかお分かりの方、いらっしゃいましたら、よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • rabbit_cat
  • ベストアンサー率40% (829/2062)
回答No.2

デザインパタンでいうコマンドパタンで実装するのがいいでしょう。 http://ja.wikipedia.org/wiki/Command_%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3 簡単に言えば、「線を描く」とか、「色を塗る」とかいった操作をみんな(共通の基底クラスをもつ)オブジェクトにして、スタックに溜め込んどく、って感じです。 「コマンドパタン undo redo」とかで検索すれば、いろいろでてくるのでは。 ただ、コマンドパタンは小規模なアプリだと簡単にできて非常にいいと思いますが、イラストレータみたいな本格的な大規模なアプリを作ろうとすると破綻しやすいです。

その他の回答 (1)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

undo用のスタックと redo用のスタックをそれぞれ用意して, ・線を描く→実際に描画して undo用のスタックにプッシュ ・undo→undo用のスタックからポップして redo用のスタックにプッシュ. それと同時に描いたものを (何らかの方法で) 戻す. ・redo→redo用のスタックからポップして undo用のスタックにプッシュし, 同時に描画する. という手順になるかな?

関連するQ&A