2011-10-31 46 views
1

好一個的UIImageView的財產,這裏的情況: 我有...顯示從另一個類編程

  • UIImageView - 屬性自定義類,我們把它叫做Enemy -class
  • 一個ViewController
  • 一個NSMutableArray,以幫助創造的多個實例Enemy(稱爲enemies

什麼,我想:

  • 能夠通過一種方法,我ViewController(如[self spawnEnemy];,其中selfViewController
  • ,隨後顯示UIImageView創建Enemy -instances無限量財產(姑且稱之爲「enemyImage」)在由我ViewController

我已經試過像這樣控制的view

-(Enemy *) spawnEnemy 
{ 
    Enemy *tempEnemy = [Enemy new]; 
    [enemies addObject:(Enemy*)tempEnemy]; 
    [self.view addSubview:(UIImageView*)[[enemies objectAtIndex:[enemies count]] enemyImage]]; 

    //randomLocation is declared in the Enemy-Class and just assigns a random 
    //CGPoint to self.enemyImage.center 
    [[enemies objectAtIndex:[enemies count]] randomLocation]; 

    return [[enemies objectAtIndex:[enemies count]]createEnemy]; 
} 

這將運行沒有錯誤,randomLocation被調用(試圖與NSLog的),如果我做這樣的事情在ViewController另一種方法:

[[self spawnEnemy] enemyTestMethod]; 

正在執行enemyTestMethod爲好。

但仍然沒有enemieView s在屏幕上顯示... 我在做什麼錯了?

非常感謝您的幫助和時間。

==== ====編輯

下面是從Enemy.h/Enemy.m相關代碼:

@interface Enemy : NSObject 
{ 
    UIImageView *enemyImage; 
} 

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

-(Enemy*) createEnemy; 

//Enemy.m 

@implementation Enemy 

@synthesize enemyImage, speed; 

-(Enemy *) createEnemy 
{ 
    self.enemyImage = [[UIImageView alloc] init]; 
    [self.enemyImage setImage:[UIImage imageNamed:@"enemy.png"]]; 
    return self; 
} 

我也糾正了最後一行在spawnEnemy - 方法正確發送createEnemy。

回答

0

您不包括代碼Enemy您在哪裏分配/初始化UIImageView屬性。除非此代碼明確指定了CGRect並且您需要sizeorigin,否則該視圖將初始化爲CGRectZero,這意味着即使您正確添加子視圖(並且看起來像您),您仍然不會看到它任何地方。

發佈Enemy代碼,問題可能會立即顯現。

+0

這實際上可能是問題。我相應地編輯了OP。 – Carnivorous

+0

YEP的確如此:D在'createEnemy'方法中調用'[self.enemyImage setFrame:CGRect]'之後,它就起作用了。謝謝! – Carnivorous

0

您是否在添加到視圖之前調用了-createEnemy?

好的,你已經檢查過了。

那麼也許你應該檢查@MusiGenesis建議。

爲此,您需要檢查您的enemyImage的屬性。

您可以在以下任一方式做到這一點:

  1. 通過打印其frame.size:

    的NSLog(@ 「enemyImage幀大小:%@」,NSStringFromCGRect(enemy.enemyImage ));

  2. 設置您感覺好極了一個斷點,並與您的調試檢查:

    P(的CGRect)[敵人enemyImage]幀]

+0

我已經嘗試在添加到數組之前調用[tempEnemy createEnemy],但是這並沒有改變任何東西... – Carnivorous