iOSアプリのデザインをInterfaceBuilder上で作成し、
PG上で動作や編集を行おうとするときに便利な変数[tag]。
一つのUIVIewに対して一つの整数値を設定できますが、
値が重複した場合は何を取得できるのか。
暇なので気になったので調べてみました。
手順は下記のとおりです。
また、今回作ったプロジェクトは
Github上にコミットしたのでそのリンクも貼って起きます。
github – ViewTagDuplication
①プロジェクトの作成
新規プロジェクトを作成します。
名前は適当で好きな名前を利用します。
(今回は[ViewTagDuplication]にしました)
②クラス[UIViewController]のサブクラスを作成
次に表示する画面であるクラス[UIViewController]の
サブクラスを新規で作成します。
この名前も適当で好きな名前を利用します。
(今回は[SampleViewController]にしました)
この時、楽をしたいのでInterfaceBuilderのファイルも同時に作成しておきます。
③適当にUIVIewを配置
②で作成できたInterfaceBuilder上に適当な数のUIViewを配置します。
この時、UIVIewの変数[tag]は変えずに背景色のみを変更します。
④クラス[UIViewController]のサブクラス上でクラス[UIVIew]を取得
②で作ったクラス[UIViewController]のサブクラスにある
関数[viewDidLoad]内で下記コードを利用して配置したクラス[UIVIew]を取得し、
背景色の情報をログに出力します。
- (void)viewDidLoad { [super viewDidLoad]; UIVIew *view = [self.view viewWithTag:0]; NSLog( @"%@" , view.backgroundColor ); }
⑤appDelegate上でクラス[UIVIewController]を表示
appDelegate上で②で作ったクラスのインスタンスを生成し表示する。
結果としてはクラス[UIViewContoller]に最初から設定されている
クラス[UIView]の背景色がログ上に表示されました。
つまり、クラス[UIVIew]の関数[viewWithTag]で
重複したタグの値を指定すると一番はじめにヒットした
クラス[UIVIew]のみを返してくれるみたいです。