[iOS]UIViewのtagが重複した場合

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]のみを返してくれるみたいです。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)