Allora, andiamo per gradi. Credo ( e spero ) di aver capito ora quello che vuoi fare, quindi ti dico prima come farei io. Dopo ti dirò cosa non va nelle due soluzioni che hai provato.
1. Soluzione mia
Creerei un controller (
MyController) che si occuperà semplicemente di Mostrare un' immagine dato un URL.
Nel "
MyController.h" Dichiaro un'attributo
UIImageView ed un' attributo
UIImage. Inoltre dichiaro la firma di un costruttore custom che prende come parametro di input una stringa (che sarà l' url dell' immagine).
@interface MyController : UIViewController
{
//Attributi
UIImageView *imageView;
UIImage *image;
}
//Costruttore custom
- (id) initWithImageURL:(NSString*)url;
@end
Nel "
MyController.m" implemento il costruttore che si carica l' immagine e la assegna al nostro attributo "
image".
In seguito implemento il
viewDidLoad dove istanzio la
UIImageView da assegnare all' attributo "
imageView", gli assegno l' "
image" ed aggiungo l' "
imageView" alla view del nostro controller (con
addSubview).
#import "MyController.h"
@implementation MyController
- (id) initWithImageURL:(NSString*)url
{
self = [self init];
if (self)
{
//Mi carico l' immagine da url e la assegno al mio attributo image
image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:url]]];
}
return self;
}
- (void) viewDidLoad
{
//Chiamo UNA VOLTA il super, prima di scrivere il mio codice
[super viewDidLoad];
//Istanzio la mia imageView e la assegno all'attributo.
//Come frame gli passo self.view.bounds che corrisponde
//alle coordinate (0,0,larghezza della view, altezza della view)
imageView = [[UIImageView alloc] initWithFrame:self.view.bounds];
//Setto l' image della "imageView"
[imageView setImage:image];
//Aggiungo l' imageView alla view mostrata dal controller
[self.view addSubview:imageView];
}
@end
Quando andrai dunque ad istanziare il tuo controller (al click di un bottone, ad esempio), farai:
MyController *cnt = [[MyController alloc] initWithImageURL:@"http://www.lega5.it/images/Classifica-A1-Lunedi-2013-14.png"];
Ho utilizzato una delle tue immagini di esempio, ma ovviamente a seconda del bottone gli passi un' immagine diversa. Ovviamente dopo che istanzi il controller dovrai mostrarlo o con una
push o con un
present.
2. Soluzione webView
Non capisco sinceramente perchè hai 2 webview. Te ne basta una e andrai a variare l' url da caricare all'interno a seconda delle tue esigenze.
Nell' esempio precedente ho provato a spiegarti tutto in maniera dettagliata perchè ho notato che sei un appassionato del "Copia e Incolla". L' ho capito da questa porzione di codice che ti ricopio lasciandoti un commento:
- (void)viewDidLoad
{
//Il super non fa altro che richiamare il viewDidLoad della classe padre, ovvero di
//UIViewController. Pertanto è sbagliato chiamarlo più di una volta. Tu lo hai
//chiamato 3 volte perchè magari ne ignori l'utilità, lo hai letto su internet e lo hai
//copiaincollato brualmente
[super viewDidLoad];
NSURL *url1 = [NSURL URLWithString:@"http://www.google.com"];
NSURLRequest *requestURL1 = [NSURLRequest requestWithURL:url1];
[webview1 loadRequest:requestURL1];
[super viewDidLoad];
NSURL *url2 = [NSURL URLWithString:@"http://www.apple.it"];
NSURLRequest *requestURL2 = [NSURLRequest requestWithURL:url2];
[webview2 loadRequest:requestURL2];
[super viewDidLoad];
}
Insomma l' errore che noto qua è che hai 2 webView di cui ne ignoro l'utilità e che hai utilizzato il viewDidLoad in maniera impropria.
3. Soluzione Immagini
Poco da dire, l' idea di istanziare in un controller un mare di immagini da URL è un qualcosa di malsano . Quando si hanno tante immagini che sono tendenzialmente sempre le stesse, si punta ad utilizzare sistemi di caching, ovvero si salvano le immagini in locale, in modo che se l'immagine è già salvata non la riscarica da url, ma la carica dal dispositivo, cosa di sicuro più rapida.
è un problema relativo al simulatore o queste latenze rimarranno anche nell'app se non le risolvo?
Probabilmente sarà peggio. Quando usi il simulatore stai usando l' hardware del tuo mac, che è di sicuro più potente dell' hardware dell' iphone. Inoltre col simulatore utilizzi la tua connessione di casa, mentre sull' iphone potresti usare il 3g che è quasi sicuramente più lento.
Un consiglio che ti do è quello di abbracciarti un libro per capire le basi, prima di lanciarti sui tutorial (che comunque sono un buon approccio, dopo che però hai assimilato le cose basilari).
Fammi sapere se ti sono stato d'aiuto o qualcosa non ti è chiara