2011-01-31 22 views
10

tengo el siguiente código:UIImageView no Muestra la imagen

@interface NeighborProfileViewController : UIViewController { 
    UIImageView * profPic; 
    UITextView * text; 
    UIButton * buzz; 
    NSString * uid; 
    NSMutableData *responseData; 
    NSDictionary * results; 
} 

@property (nonatomic, retain) IBOutlet UIImageView * profPic; 
@property (nonatomic, retain) IBOutlet UITextView * text; 
@property (nonatomic, retain) IBOutlet UIButton * buzz; 
@property (nonatomic, retain) NSString * uid; 

@end 

Esto es lo que tengo en el viewDidLoad en el archivo .m

@implementation NeighborProfileViewController 
@synthesize uid; 
@synthesize profPic; 
@synthesize buzz; 
@synthesize text; 


// Implement viewDidLoad to do additional setup after loading the view, typically from a nib. 
- (void)viewDidLoad { 
    [super viewDidLoad]; 
    NSURL *url = //some URL to the picture; 
    NSData *data = [NSData dataWithContentsOfURL:url]; 
    UIImage *img = [[[UIImage alloc] initWithData:data] autorelease]; 
    self.profPic = [[UIImageView alloc] initWithImage: img]; 
} 

Creo Telegrafié el UIImageView través IB correctamente. Tengo una salida del UIImageView al profPic en el propietario de archivos. ¿Qué estoy haciendo mal?

Respuesta

13

Si está configurando una imagen predeterminada, ¿eso se mantiene visible después de llamar al self.profPic = [UIImageView] o está siendo eliminado de la pantalla? Creo que este problema se produce cuando self.profPic publica la vista de la imagen anterior para reemplazarla por la que acaba de crear. La instancia anterior UIImageView, junto con todas las propiedades que definió en IB, probablemente se eliminen automáticamente de la supervista. Por eso no estás viendo la imagen descargada.

Si utilizó para crear el IBUIImageView entonces usted no desea crear una nueva ImageView y asignarlo a profPic (que ya es una instancia totalmente UIImageView). Intenta llamar al [profPic setImage:img];, que simplemente cambiará la imagen en la vista de la imagen profPic.

+0

Me estaba dando vueltas durante unas horas. estaba asignando la imagen vista de nuevo antes de configurar la imagen. Gracias @thelaws – sErVerdevIL

2

@Equinox usar

[profPic setImage:img]; 

en lugar de

self.profPic = [[UIImageView alloc] initWithImage: img]; 

aunque el uso autorelease no es un problema aquí. también se puede hacer algo como esto

UIImage *img = [[UIImage alloc] initWithData:data] ; 
    [profPic setImage:img]; 
    [img release]; 

el problema con

self.profPic = [[UIImageView alloc] initWithImage: img]; 

es que se están creando otra ubicación de memoria para profPic y eso significa profPic apuntará ya no a la UIImageView en su IB más

Cuestiones relacionadas