あるUIViewControllerにUIImageViewとUIButtonとUITableViewをaddSubviewした時に
ボタン押下してイメージビューのイメージを変更してテーブルのサイズをイメージのサイズにあわせて調整して…
としたい場合、各Viewのインスタンスをメンバ変数もしくはプロパティとして保持するやり方を自分はやってきました。
そのたびにviewDidLoadのタイミングでインスタンス保持し、deallocなどのタイミングでリリースするっといった
初期化、開放処理を一個一個追加していたのですが、
なにげなーくブログ巡りしているときに気になるキーワードを発見しました。
そのキーワードは「viewWithTag」!
これはaddSubviewしたUIView継承クラスにtagを設定していると
呼び出し時に指定したタグ番号をもつUIViewクラスを取得することができるメソッドのようです。
UIImageView* imageView = [[UIImageView alloc] init];
[imageView setTag: 1];
[self.view addSubview: imageView];
[imageView release];
としていた場合
別のメソッドにて
UIImageView* imageView = [self.view viewWithTag: 1];
とすると取得することができるみたいですね〜
これなら各ローカル変数として管理することができますし
メモリリークのリスクも減るため有効活用すべきですね〜
ちなみにtagを設定していないUIViewはすべて0が設定されているらしく
viewWithTagにて0を指定するとNGのようです。
この記事へのコメント