0

オブジェクト名として配列項目を試しています。

私は5UIImageView秒を設定しました:

@interface miniTestViewController : UIViewController {

    NSArray *array;

    IBOutlet UIImageView *sun;
    IBOutlet UIImageView *moon;
    IBOutlet UIImageView *rain;
    IBOutlet UIImageView *snow;
    IBOutlet UIImageView *hail;
}

-(IBAction)fadeChosenImage:(id)sender;

私のplistには、太陽、月、雨、雪、雹などの画像名の配列が含まれています

.m VDL スタブでは、この plist が に読み込まれますNSArray *array

UIButtonタグはインデックスでオブジェクトを選択します:

-(IBAction)fadeChosenImage:(id)sender{

    NSString *image = [[NSString alloc] init];  
    image= nil;

    switch ([sender tag]) { 
        case 0: 
            image = [array objectAtIndex:[sender tag]]; 
            break; 
        case 1: 
            image = [array objectAtIndex:[sender tag]]; 
            break; 
        case 2: 
            image = [array objectAtIndex:[sender tag]]; 
            break; 
        case 3: 
            image = [array objectAtIndex:[sender tag]]; 
            break; 
        case 4: 
            image = [array objectAtIndex:[sender tag]]; 
            break; 
        default: 
            break;
    }

次のように、をオブジェクト名NSStringとして使用する必要があります。UIImageView

[[array objectAtIndex:[sender tag]] setAlpha:0];
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:6.0];
[[array objectAtIndex:[sender tag]] setAlpha:1];

しかし、これまでのところ、メッセージに応答しないobjectAtIndexa を返します。NSStringsetAlpha

NSStringをオブジェクト名に変換/ラップ/キャスト/使用することは可能ですか?UIImageVIew

助けてくれてありがとう。

4

2 に答える 2

1

文字列を使用して取得するよりも、画像ビュー オブジェクトを配列に直接保存する方がはるかに簡単です。

文字列をキーとしてオブジェクトを検索する場合は、辞書に格納します。

ただし、あなたの場合、数値インデックスがあります。UIImageView オブジェクトを配列に直接保存するだけです。オブジェクトを複製するのではなく、オブジェクトへの参照を配列に保存するだけです。

于 2012-04-28T22:32:31.450 に答える
0

試してくださいobject_getInstanceVariable

#import <objc/runtime.h>

...

UIImageView *imageView = nil;
NSString *name = [array objectAtIndex:[sender tag]];
object_getInstanceVariable(self, [name UTF8String], (void**)&imageView);
于 2012-04-28T03:04:27.447 に答える