Pentru început vom crea un proiect nou, utilizând template-ul “Single View Application” și-l vom întitula “WebBrowser“.


Deschidem fișierul “VeiwController.h” și efectuam careva modificări:
- indicam obiectului nostru “ViewController” că va implimenta metode din protocolul ”UIVebViewDelegate“
- adăugăm 3 IBoutlets pentru a interactiona cu elementele din interfața utilizatorului:
- “urlField” obiectul unde va fi introdusa adresa paginii web.
- “webBrowser” este elementul care va afișa paginile web.
- “loadingActivity” indicatorul de activitate al browser-ului nostru.
- adaugăm o metodă IBAction, care va fi chemată la actiune când utilizatorul nostru va apasa pe butoul de navigare “GO”
Acest fișier ar trebui să arate așa
// // ViewController.h // WebBrowser // // Created by xCode.md on 11/28/11. // Copyright (c) 2011 xCode.md. All rights reserved. // #import <UIKit/UIKit.h> @interface ViewController : UIViewController<UIWebViewDelegate> @property (nonatomic, retain) IBOutlet UITextField *urlField; @property (nonatomic, retain) IBOutlet UIWebView *webBrowser; @property (nonatomic, retain) IBOutlet UIActivityIndicatorView *loadingActivity; -(IBAction) navigateUrl; @end
Acum modificăm fișierul de implimetare “ViewController.m”
În acest fișier direct după @implimetation ViewController, pentru a crea metodele “setters” și “getters” pentru variabilele noastre adaugăm acest cod
@synthesize urlField; @synthesize webBrowser; @synthesize loadingActivity;
acum implimentăm codul pentru metoda noastră “navigateUrl”
-(IBAction) navigateUrl
{
[urlField resignFirstResponder];
NSURL *url = [NSURL URLWithString:urlField.text];
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
[webBrowser loadRequest:requestObj];
}
și implimentăm metodele utilizate din protocolul UIWebViewDelegate
- (void)webViewDidStartLoad:(UIWebView *)browser {
[loadingActivity startAnimating];
}
- (void)webViewDidFinishLoad:(UIWebView *)browser {
[loadingActivity stopAnimating];
}
Fișierul ar trebui sa conțină urmatorul cod
//
// ViewController.m
// WebBrowser
//
// Created by xCode.md on 11/28/11.
// Copyright (c) 2011 xCode.md. All rights reserved.
//
#import "ViewController.h"
@implementation ViewController
@synthesize urlField;
@synthesize webBrowser;
@synthesize loadingActivity;
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
#pragma mark - View lifecycle
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
- (void)viewDidUnload
{
[super viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
}
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
}
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
}
- (void)viewDidDisappear:(BOOL)animated
{
[super viewDidDisappear:animated];
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}
-(IBAction) navigateUrl
{
[urlField resignFirstResponder];
NSURL *url = [NSURL URLWithString:urlField.text];
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
[webBrowser loadRequest:requestObj];
}
- (void)webViewDidStartLoad:(UIWebView *)browser {
[loadingActivity startAnimating];
}
- (void)webViewDidFinishLoad:(UIWebView *)browser {
[loadingActivity stopAnimating];
}
@end
Acum vom lucra cu fișierul de interfață “ViewController.xib“. Facem click pe acest fișier. Din libraria cu obiecte, din meniul din dreapta, selectăm obiectul “UIToolbar”. Cu ajutorul mouse-ului, tragem și adăugăm acest obiect pe interfața aplicației noastre, pe “UIView”.
Facem dublu click pe obiectul “UIBarButtonItem” și modificăm titlul din “Item” în “GO”
Din libraria cu obiecte selectăm obiectul “UITextField” și-l tragem, exact cum este indicat în imaginea de mai jos, pe obiectul adăugat precedent, înaintea butonului “GO“. Dupa care îl lărgim un pic

Din libraria cu obiecte găsim și selectăm obiectul “UIVewbView” și-l tragem pe interfața aplicației noastre, pe obiectul “UIView“. După care, cu ajutorul mouse-lui il poziționăm direct sub “UIToolbar”

A mai ramas de adăugat și obiectul de afișare a activitătii browser-ului nostru. Din libraria cu obiecte găsim și selectăm obiectul “UIActivityIndicatorView” și-l tragem pe interfața aplicatiei noastre, pe obiectul “UIView“.

Selectăm obiectul nostru “UIActivityIndicatorView” și în meniul din dreapta sus, facem click pe “Show the Attributes Inspector“. Modificăm un pic culoarea obiectului selectând opțiunea pentru proprietatea “Color” -> “Dark Text Color“. Un pic mai jos de “Color” găsim și selectăm proprietatea “Hides When Stopped“.
Acum facem legatură între obiectele de interfață și obiectele declarate în “ViewController”
Facem click dreptul pe “File’s Owner“, găsim primul obiect “loadingActivity“. Facem click pe cerculețul din partea dreaptă care apare langă numele obiectului nostru, din “ViewController“, și-l tragem pe obiectul nostru, din interfată, “UIActivityIndicatorView“.

La fel procedam și cu “urlField“, doar că îl tragem pe obiectul “TextFieldView“.

Conectăm acum metoda “navigateUrl” din “ViewController” cu acțiunea obiectul “UIBarButtonItem” (butonul nostru cu titlul “Go“).

Acum conectam obiectul “UIWebView” din interfața aplicației noastre cu obiectul “webBrowser“ din “ViewController“.

A mai ramas să indicam că delegatele obiectului “UIWebView“ (webViewDidStartLoad și webViewDidFinishLoad) sunt interceptate de “Viewcontroller“, selectăm obiectul “UIWebVew“, facem click dreptul, și la fel, tragem cerculețul din dreapta catre “File’s Owner”
Acum efectuăm un “test drive”. Apăsam butonul “Run”

Xcode va lansa acum Simulatorul iOS cu aplicaţia noastră în ea.

Pentru cei ce doresc sa descarce acest proiect am pus la dispozitie codul sursa




