スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
このエントリーをはてなブックマークに追加

[iOS]ビューを判別したい時はどうすればいいか

UIViewを含んだサブクラスたちが入り組んだ状態のビュー配列や行列のようなものを判別する方法です。
UIView、UIScrollView、UIImageView、UIButtonなど様々ありますが、これらはすべてUIViewという括りの中にあり、さらにこのUIViewの親玉ともいえるNSObjectが存在します。
今回はそのNSObjectのプロパティを利用して判別を行います。

NSObjectプロパティにはclassというプロパティがあり、このプロパティにはUIScrollViewやUIViewのようなクラス型が入っており、この比較を行うことで対象が何のビューなのか判別し、最終的には取り出すことが可能なのです。

たとえばUIViewにUIButtonやUIScrollViewの2つがaddSubViewされた状態の場合、

・UIViewのsubviewsをカウントすると"2"と帰ってくるはずです。
//count = 2;
[uiview.subviews count];


・次にここからひとつ取り出してみます。
//subviewsから0番目を取得
NSObject *object = [uiview.subviews objectAtIndex:0];


・取りだしたものはなんでしょう?判定してみます。
//クラスの名前が返ってくる
NSLog(@"object = %@",NSStringFromClass(object.class));


・結果がUIButtonと帰ってきたとして、このオブジェクトがUIButtonであるか比較してみましょう。

//UIButtonであるかどうか
if([object isMemberOfClass:[UIButton class]]){
NSLog(@"im UIButton.");
}
//UIButton、またはそれを継承するものかどうか
if([object isKindOfClass:[UIButton class]]){
NSLog(@"im UIButton inheritance.");
}


という感じでクラス型というものが取得できます。

うまく使えばたとえ入り組んだビュー構造になったとしても判別が可能となります。

参考URL:objective-cでクラスの判定
このエントリーをはてなブックマークに追加

tag : iOS NSObject UIView Class クラス 判別 判定 分岐 subviews

コメントの投稿

非公開コメント

Translation


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。
プロフィール

チーズくん

Author:チーズくん
個人的メモをただ羅列しています。
twitter:@cheese1038

バロメーター
最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。