0

カスタム UIView を作成し、デリゲートをアタッチしました。すべてが美しく機能します。

ただし、これらの UIView の 60 は、ループ内の配列で作成されます。そして、デリゲートをこれらの美しさの1つにアタッチしようとすると、次の分析警告が表示されます:タイプ '__strong id'のオブジェクトにプロパティ 'デリゲート'が見つかりません

うまくいけば、これはいくつかの単純な構文の問題ですか?

これはうまくいきます:

myUIView *aSimpleTest = [[myUIView alloc] init…];
aSimpleTest.delegate = self;   //nice!
...

これはしません:

for (i=0; i<60; i++){
    [arrayOfItems addObject:[[myUIView alloc] init…];
    [arrayOfItems objectAtIndex:i].delegate = self;//error, as above
    ...
}

助けていただければ幸いです。(願わくば、新しいことを学ぶのにもう 1 日費やす必要はありません!)

4

3 に答える 3

3

これを試して:

for (i=0; i<60; i++){
    myUIView *view = [[myUIView alloc] init…];
    view.delegate = self;
    [arrayOfItems addObject:view];
    ...
}

編集:プロパティを持たない[arrayOfItems objectAtIndex:i]リターンがあるため、エラーが発生します。次のこともできます。iddelegate

myUIView *view = (myUIView*)[arrayOfItems objectAtIndex:i];
view.delegate = self;

また:

[[arrayOfItems objectAtIndex:i] setDelegate:self];
于 2012-07-20T15:36:55.617 に答える
1

ループで次のようにします。

myUIView *tempView = (myUIView*)[arrayOfItems objectAtIndex:i];
tempView.delegate = self;
于 2012-07-20T15:37:52.013 に答える
1

キャストを使用します。

((MyUIView*)[arrayOfItems objectAtIndex:i]).delegate = self;

(余談ですが、クラス名は常に大文字で始めてください。)

于 2012-07-20T15:38:19.067 に答える