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

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

画像やラベルに対してのRedo Undo機能を考えてみる1

Undo Redo

cocoaでなく、Redo Undoをどうやるのか参考になるサイトが少ない上に

あってもお絵描きで描画をどう取って消すかというものばかり。

なので自分でも色々考えながら作る事にしてみた。

 まず保存する配列を作る

どういう動作でRedo Undoを実現するかまず考える時に、まず考えるのが

進むにも戻るにも格納する場所が必要。

なのでNSMutableArrayで格納場所を作ります。

 

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

 

この_containerStockの中に必要な物を格納していきます。

 

何を格納するか?

今回は画像とラベルをUndoRedoさせようと思っているので

_contentViewというUIViewにのっけるsubviewsを保管。

格納した数をカウントしてそれに合わせて進んだり戻したりを再現してみます。

その為に_containerStockの中身を管理する変数を用意

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

 

管理する為の変数をNSIntegerで用意、名前は_redoundoIndexと

 

用意するもの

Main.storyboardの方にundo redoのアウトレットをまず作成。

f:id:inou-social:20140127173435p:plain適当にundobtn redobtnとしてアウトレット接続しておく。

 

ちゃんとアウトレット接続の方も

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

 

ボタンをアウトレット接続する訳

undo redo機能はストック上限まで行ったら押せないようにしたい、

なのでボタンのON.OFFを呼び出して設定する為のアウトレット接続

self.redobtn.enabled = YES;

これはボタンを有効にするか?という事でYESを返していますが

させたくない時は YESをNOに変えるだけ。

 

続きは次回で