嗯,这是情况: 我有......
UIImageView
- 属性的自定义类,我们称之为Enemy
- 类ViewController
NSMutableArray
以帮助创建Enemy
的多个实例(称为enemies
)和我想要的:
Enemy
中的方法创建无限量的ViewController
- 实例(例如[self spawnEnemy];
,其中self
是ViewController
) UIImageView
enemyImage
上显示view
属性(我们称之为“ViewController
”)
我尝试过这样的事情:
-(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
...
我做错了什么?
非常感谢你的帮助和时间。
====编辑====
以下是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 :(得分:0)
您没有在Enemy
中包含您分配/初始化UIImageView
属性的代码。除非此代码明确指定了CGRect
所需的size
和origin
,否则视图将使用CGRectZero
初始化,这意味着即使您正确添加了子视图(它看起来像你),你仍然不会在任何地方看到它。
发布Enemy
代码,问题可能会立即显现出来。
答案 1 :(得分:0)
在将它们添加到视图之前,您是否调用了-createEnemy?
好的,你已经检查了这个。
那么也许你应该检查@MusiGenesis建议。
为此,您需要检查敌人图像的属性。
您可以通过以下任一方式执行此操作:
通过以下方式打印其frame.size:
NSLog(@“enemyImage帧大小:%@”,NSStringFromCGRect(enemy.enemyImage));
设置一个感觉良好的断点,并检查调试器:
p(CGRect)[[敌人的敌人图像]框架]