0

カード ゲームを作成しており、オブジェクトのインスタンス変数から UIImages を呼び出して UIImageView を更新しようとしています。

Card オブジェクトの NSArray インスタンス変数を持つ Deck オブジェクトがあります。

各 Card オブジェクトにはいくつかのインスタンス変数があり、そのうちの 1 つは UIImageView に表示しようとしている UIImage です....そして、これが私が問題を抱えている場所です

ストーリーボードに UIImageView が表示されず、コンパイル エラーが発生しません

更新しようとしている UIImageView は cardDisplay (ViewController.h) です

ここに私のコードからのいくつかのスニペットがあります

ViewController.h

#import "Deck.h"
#import "Card.h"

@interface ViewController : UIViewController
{
    UIImageView *cardDisplay;
}

@property (nonatomic, retain) IBOutlet UIImageView *cardDisplay;


@end

ViewController.m

    #import "ViewController.h"

    #import "Deck.h"
    #import "Card.h"

    @implementation ViewController


@synthesize cardDisplay;

- (void)viewDidLoad
{
    [super viewDidLoad];

    Deck *deck = [[Deck alloc]init];

    NSLog(@"%@", deck);

    for (id cards in deck.cards) {
         NSLog(@"%@", cards);
    }

    self.cardDisplay = [[UIImageView alloc] initWithImage:
         [[deck.cards objectAtIndex:0 ] cardImage]];
}


@end

カード.h

@interface Card : NSObject
{
    NSString *valueAsString, *suitAsString;
    NSInteger faceValue, countValue;
    Suit suit;
    UIImage *cardImage;
}

@property (nonatomic, retain) NSString *valueAsString;
@property (nonatomic, retain) NSString *suitAsString;
@property (nonatomic) NSInteger faceValue;
@property (nonatomic) NSInteger countValue;
@property (nonatomic) Suit suit;
@property (nonatomic) UIImage *cardImage;

- (id) initWithFaceValue:(NSInteger)aFaceValue countValue:(NSInteger)aCountValue
                suit:(Suit)aSuit cardImage:(UIImage*)aCardImage;

@end

Deck.h

#import "Card.h"

@interface Deck : NSObject
{
    NSMutableArray *cards;
}

@property(nonatomic, retain)NSMutableArray *cards;

@end

Deck.m

#import "Deck.h"
#import "Card.h"

@implementation Deck

@synthesize cards;

- (id) init
{
    if(self = [super init])
    {
        cards = [[NSMutableArray alloc] init];

        NSInteger aCount, picNum = 0;

        for(int suit = 0; suit < 4; suit++)
        {
            for(int face = 1; face < 14; face++, picNum++)
            {

                if (face > 1 && face < 7) 
                    aCount = 1;
                else if (face > 6 && face < 10)
                    aCount = 0;
                else
                    aCount = -1;

                NSString *path = [[NSBundle mainBundle] bundlePath];
                NSString *imagePath = [path stringByAppendingPathComponent: 
                       [NSString stringWithFormat:@"/cards/card_%d.png",picNum]];

                UIImage *output = [UIImage imageNamed:imagePath];

                Card *card = [[Card alloc] initWithFaceValue:(NSInteger)face
                                                countValue:(NSInteger)aCount
                                                suit:(Suit)suit
                                                cardImage:(UIImage *)output];

                [cards addObject:card];
            }

        }
    }
    return self;
}


@end
4

1 に答える 1

0

この行:

self.cardDisplay = [[UIImageView alloc] initWithImage:
         [[deck.cards objectAtIndex:0 ] cardImage]];

次のようにする必要があります。

self.cardDisplay.image = [[deck.cards objectAtIndex:0 ] cardImage];

新しいイメージを作成するのではなく、IB で作成したイメージ ビューにイメージを設定する必要があります。このようにしても、後でタイマーを使用してやりたいことができなくなるわけではありません。

于 2012-12-28T04:31:27.150 に答える