2012-01-22 13 views

答えて

6

レイヤーは、(その答えupvote行く)https://stackoverflow.com/a/400251/264619によると、キー値に準拠しています。

UIView *myView = [[UIView alloc] init]; 
[myView.layer setValue: @"hello" forKey: @"world"]; 
2

一般的なアプローチは、辞書内のキーとして、受信機のメモリアドレスを使用することであり、それらのキーのための 、その後、組み込みditionariesを設定します。

#define KEY(o) [NSString stringWithFormat:@"%x", o] 

- (id) init 
{ 
    if ((self = [super init]) 
    { 
     // other stuff 
     NSMutableDictionary *globalKeys = [NSMutableDictionary new]; // don't forget to release in dealloc 
    } 
    return self; 
} 

// and where you want to set a key-value pair: 
- (void) addKey:(NSString *)key value:(id)value forObject:(id)obj 
{ 
    NSString *objKey = KEY(obj); 
    NSDictionary *objDict = [globalKeys objectForKey:objKey]; 
    if (!objDict) 
    { 
     [globalKeys setObject:[NSMutableDictionary dictionary] forKey:objKey]; 
    } 
    [objDict setValue:value forKey:key]; 
} 

それがお役に立てば幸いです。

+0

ありがとうございます。ビュー自体にプロパティを追加する方法がない場合、私はこのようなことを考えていました。 – Roger

3

objc_setAssociatedObjectを使用してUIViewNSMutableDictionaryを添付します。代わりに、ビューのレイヤー上の値:あなたがキーを設定できるよう

http://developer.apple.com/library/ios/ipad/#documentation/Cocoa/Conceptual/ObjectiveC/Chapters/ocAssociativeReferences.html

+0

ありがとうございます。私はこれを試してみる。 iOS上の – Roger

+0

では、Objective-Cランタイム関数を直接使用することはできません。 –

+0

テストケースで正常に動作しました。 –

関連する問題