0

重複の可能性:
配列オブジェクトへのアクセス

xibファイルに画像とimageviewを含む配列があります。ここで、配列に含まれる最初のオブジェクト(画像)をimageviewで表示したいと思います。数時間やってみましたが、うまくいきませんでした。どうすればいいですか?

mtアレイの減速:

    photoArray = [[NSMutableArray alloc] init];
    PhotoItem *photo1 = [[PhotoItem alloc] initWithPhoto:[UIImage imageNamed:@"1.jpg"] name:@"roy rest"  photographer:@"roy"];
    PhotoItem *photo2 = [[PhotoItem alloc] initWithPhoto:[UIImage imageNamed:@"2.jpg"] name:@"roy's hand" photographer:@"roy"];
    PhotoItem *photo3 = [[PhotoItem alloc] initWithPhoto:[UIImage imageNamed:@"3.jpg"] name:@"sapir first" photographer:@"sapir"];
    PhotoItem *photo4 = [[PhotoItem alloc] initWithPhoto:[UIImage imageNamed:@"4.jpg"] name:@"sapir second" photographer:@"sapir"];
    [photoArray addObject:photo1];
    [photoArray addObject:photo2];
    [photoArray addObject:photo3];
    [photoArray addObject:photo4];

私が使用しようとしたコード:

imgView = [[UIImageView alloc] initWithImage:[photoArray objectAtIndex:0]];

ありがとう!!

4

2 に答える 2

1

あなたの問題への答えは非常に簡単です。これらすべてに慣れていない場合は、段階的に実行してみてください。

array: photoarray 
imageView in xib : imgView
imgView =[UIImageView alloc]init];
imgView.image=[UIImage imageNamed:[photoarray objectatindex:0]];

これはあなたの質問の目的に役立ちます。

于 2012-10-24T23:36:24.390 に答える
0

写真配列には画像が含まれていません。カスタム PhotoItem オブジェクトが含まれています。そのオブジェクトから UIImage を取得する必要があります。おそらく photo on という名前のプロパティ セットがあると仮定しますPhotoItem。これを呼び出す必要があります。

imgView = [[UIImageView alloc] initWithImage:[[photoArray objectAtIndex:0] photo]];

// or

imgView = [[UIImageView alloc] initWithImage:[photoArray objectAtIndex:0].photo];

アップデート

オブジェクトに関する情報にアクセスするには、プロパティが必要です。写真、名前、写真家など、アクセスしたいもののプロパティを持つように PhotoItem クラスを再構築する必要があります。あなたがしようとしている方法でインスタンス変数にアクセスすることはできません。

// PhotoItem.m

@interface PhotoItem : NSObject
{
     // Instance Variables aren't accessible outside of the class.
}

@property (nonatomic, strong) UIImage *photo;
@property (nonatomic, strong) NSString *name;
@property (nonatomic, strong) NSString *photographer;

- (id) initWithPhoto:(UIImage)image name:(NSString*)stringA photographer:(NSString*)stringB;

また、おそらく init も書き直す必要があります。

// PhotoItem.h

@implementation PhotoItem

@synthesize photo, name, photographer;

- (id) initWithPhoto:(UIImage)image name:(NSString*)stringA photographer:(NSString*)stringB
{
    self = [super init];
    if (self) {
         photo = image;
         name = stringA;
         photographer = stringB;
    }
}

次に、その何かにアクセスするには

PhotoItem *photo1 = [[PhotoItem alloc] initWithPhoto:[UIImage imageNamed:@"1.jpg"] name:@"roy rest"  photographer:@"roy"];

photo1.photo // returns UIImage
photo1.name // returns NSString
photo1.photographer // returns NSString

したがって、それらが配列内のオブジェクトである場合、次のようになります

[photoArray objectAtIndex:0] // returns your PhotoItem Object
[[photoArray objectAtIndex:0] photo] // returns that PhotoItem Object then gets the photo out of it returning a UIImage in total.
于 2012-06-02T12:27:55.583 に答える