2011-09-20 6 views
0

J'ai créé une application basée sur la vue. J'ai un sampleGameViewContrioller.xib, qui contient la vue principale, et la vue enfant, qui est connectée avec la classe Behavior.Comment ajouter un UIImageView à un UIView (pas un UIViewController)?

SampleViewController.xib:

  • Voir
    • Voir < - Comportement

En sampleViewContoller.m je créer une instance de la classe Comportement:

Behavior *b = [[Behavior alloc] initilizeWithType:@"type" position:rect mapArray:arrMap]; 

Behavior.m:

-(id) initilizeWithType:(NSString *)type position:(CGRect) pos mapArray:(NSMutableArray *) mapArr { 

self = [super initWithFrame:CGRectMake(0, 0, 1024, 570)]; 
if (self != nil) { 
if ([type isEqualToString:@"type"]) { 
arrMap = mapArr; 
self.rectForDraw = pos; 
self.file = [[NSString alloc]initWithString:@"girl.png"]; 
UIImageView *imgg = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"girl.png"]]; 
imgg.frame = rect; 
[self addSubview:imgg]; 
timer = [NSTimer scheduledTimerWithTimeInterval:0.015 target:self selector:@selector(moving:) userInfo:nil repeats:YES]; 
} 
} 
return self;} 

Mais cela ne fonctionne pas. L'image ne s'ajoute pas à ma vue.

si j'ajoute imageView en - (void) drawRect: (CGRect) rect, il travaille:

- (void)drawRect:(CGRect)rect { 
self.img = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"girl.png"]]; 
self.img.frame = CGRectMake(100, 100, 100, 100); 
[self addSubview:self.img]; } 

Mais j'envoyer des paramètres de dessin en classe Comportement par constructeur. Comment ajouter imageView sans méthode drawRect, avec mon constructeur?

désolé pour mon anglais :)

+0

Pouvez-vous clarifier ce qui suit: Que faites-vous avec 'b' après l'avoir créé dans votre viewcontroller? Quel 'drawRect' substituez-vous dans votre dernier extrait de code? Est-ce la classe 'Behavior'? – jrturton

+0

Je crée une instance de classes pour gérer chacune d'elles. La classe dessine l'image et la déplace dans sa propre logique. Ainsi, créé un tableau d'instances, dont chacune est responsable de déplacer l'image. – Benjamin

+0

>> Quels drawRect substituez-vous dans votre dernier extrait de code? Est-ce la classe Behavior? Oui, dans la classe Comportement. Mais c'est juste un échantillon – Benjamin

Répondre

1

Si tu veux ajouter une vue d'image sur UIView simple, alors il suffit de faire [self.view addSubview:imageview]; Si vous obtenez cette image de méthode de classe Behavior puis retour UIImageView de cette méthode et l'ajouter à votre point de vue Essayez ceci:

Behavior *b = [[Behavior alloc] init]; 

Puis écrire une méthode dans le comportement classe

-(UIImageView*) initilizeWithType:(NSString *)type position:(CGRect) pos mapArray:(NSMutableArray *) mapArr { 
// Your Logic 

return imgView; //UIImageView object 
} 

Ensuite, appeler cette méthode dans votre viewcontroller comme

UIImageView *imgView=[b initilizeWithType:@"YOUR STRING" position:YOUR RECT pos mapArray:YOUR ARRAY ]; 
+0

ça ne marche pas. – Benjamin

+0

message: "Propriété 'view' introuvable sur l'objet de type 'Behavior *'" – Benjamin

+0

Faire du comportement en tant que sous-classe de UIView. OU U peut définir le type de retour de la méthode (dans Behavior) comme UIImageView OU simplement faire [self addSubView: imageView] ' – iosfanboy9

0
imgg.frame = rect; 

Cette ligne affecte votre cadre de imageView à ... rien pour autant que je peux voir. Est-ce que cela devrait être pos ou rectForDraw? Lorsque vous ajoutez à votre vue dans drawRect, vous définissez explicitement une image réelle, c'est probablement là que réside la différence.

+0

j'ai eu une erreur. Je l'ai écrit par exemple. Même si j'écris 'imgg.frame = CGRectmake (100, 100, 100, 100)', l'image n'apparaît pas. – Benjamin

Questions connexes