Home / Programmazione / Objective-C / Usare le UIWebView in iPhone e iPad
Mattepuffo

Usare le UIWebView in iPhone e iPad

Usare le UIWebView in iPhone e iPad

Apriamo una nuova sezione dedicata al linguaggio nativo per i sistemi Apple: Objective-C.

Nello specifico vedremo come caricare una UIWbeView, componente che ci permette di visualizzare le pagine web su iPhone e iPad.

La guida si riferisce infatti ad entrambi i dispositivi.

Nel vostro progetto aggiungete un componente UIWebView e "collegatelo" a InterfaceBuilder.

Ad esempio questo è il mio FirstViewController.h:

#import <UIKit/UIKit.h>

@interface FirstViewController : UIViewController {
     IBOutlet UIWebView *wvCollection;
}

@property (nonatomic, retain) IBOutlet UIWebView *wv_collection;

@end

Adesso nell'implementazione andremo a usare due metodi:

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    [wvCollection loadRequest:[LoadUrl load:@"http://www.compagniaitaliana.it/beta/app/collection.php"]];
}

 

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    [wvCollection loadRequest:[LoadUrl load:@"http://www.compagniaitaliana.it/beta/app/collection.php"]];
}

Il primo metodo viene caricato solo la prima volta che si accede al controller.

Se poi cambiamo view e ci ritorniamo vediamo che è rimasto come lo avevamo lasciato.

Se vogliamo che si ricarichi ogni volta dobbiamo implementare anche il secondo metodo.

 

Per caricare la UIWebView dobbiamo passargli un oggetto NSURLRequest ; visto che ho più UIWebView mi è sembrato logico creare una classe apposita.

La classe LoadUrl con il metodo load ha come scopo proprio quello di creare un oggetto NSUrlReuqest da un link che gli viene passato a seconda della view in cui ci troviamo:

#import "LoadUrl.h"

@implementation LoadUrl

+ (NSURLRequest*)load:(NSString *)strUrl {
    NSURL *url = [NSURL URLWithString:strUrl];
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    return request;
}

@end

Il metodo statico ritorna NSURLRequest e richiede un NSString.

In questo modo non duplichiamo codice e se abbiamo più UIWebView ci basterà dirgli quale indirizzo caricare e richiamare quella classe.