• Programmazione Android
  • CORSI ONLINE
  • Web Agency

Logo

Corsi di programmazione web e mobile online
Navigation
  • Home
  • CORSI ONLINE
  • Tutorial Pratici
  • GUIDE COMPLETE
    • Corso completo di C
    • Corso videogame con Cocos2d
    • Programmazione Cocoa Touch
  • Sezioni
    • Libri e manuali
    • Tips & Tricks
    • Risorse utili
    • Strumenti di Sviluppo
    • Materiale OpenSource
    • Framework
    • Guide Teoriche
    • Guide varie
    • Grafica e Design
    • iPad
    • News
    • Video Tutorial
    • Windows Phone
  • Pubblicità
  • About
    • Chi siamo
    • Pubblicazioni
    • Collabora
    • Sostieni devAPP

T#009 – Gestiamo più viste

By Redazione | on 17 Novembre 2009 | 25 Comments
Senza categoria

t009_IS In questo tutorial vedremo uno dei tanti modi possibili di gestire più viste all’interno delle nostre applicazioni. Per far ciò creeremo una classe, la cui superclasse sarà UIViewController che si occuperà avviare la vista principale e conterrà il codice per navigare tra le varie viste disponibili. Apriamo Xcode, creiamo un nuovo progetto e dall’elenco dei template disponibili scegliamo “Window-based Application”. Clicchiamo col pulsante destro del mouse su “Classes” in “Groups & Files”, quindi su “Add” e su “New File…”, dalla finestra che si apre clicchiamo su “UIViewController subclass” e premiamo il pulsante “Next” per proseguire. Diamo un nome al nuovo file, ad esempio “controllerViste”, facciamo attenzione che sia selezionata l’opzione “Also create controllerViste.h” e clicchiamo su “Finish”. Apriamo il file “controllerViste.h” appena creato e inseriamo il seguente codice:

#import 


@interface controllerViste : UIViewController {
	IBOutlet UIView *vistaUno;
	IBOutlet UIView *vistaDue;
	IBOutlet UIView *vistaTre;
}

@property (nonatomic, retain) IBOutlet UIView *vistaUno;
@property (nonatomic, retain) IBOutlet UIView *vistaDue;
@property (nonatomic, retain) IBOutlet UIView *vistaTre;

-(IBAction)vaiUno;
-(IBAction)vaiDue;
-(IBAction)vaiTre;

@end

Così facendo abbiamo creato 3 oggetti IBOutlet di tipo UIView che saranno collegati alle nostre viste che definiremo successivamente tramite Interface Builder. Abbiamo inoltre dichiarato i 3 metodi che ci permetteranno di navigare tramite le viste della nostra applicazione e che collegheremo ai 3 UIButton che implementeremo nella nostra interfaccia tramite IB più avanti. Apriamo ora il file di implementazione della nostra classe, “controllerViste.m” e inseriamo il codice dei metodi appena dichiarati nel file di interfaccia:

@synthesize vistaUno, vistaDue, vistaTre;

-(IBAction)vaiUno{
	self.view = vistaUno;
}

-(IBAction)vaiDue{
	self.view = vistaDue;
}

-(IBAction)vaiTre{
	self.view = vistaTre;
}

- (void)viewDidLoad {
        [super viewDidLoad];
	self.view = vistaUno;
}

Come vedete il codice per i 3 metodi è molto semplice e non fa altro che mostrare la rispettiva vista. Abbiamo inoltre “scommentato” il metodo viewDidLoad e abbiamo impostato la vista principale che si aprirà all’avvio dell’applicazione. Salviamo, apriamo “myViewAppDelegate.h” e modifichiamo il codice come segue:

#import 

@interface myViewAppDelegate : NSObject  {
        UIWindow *window;
	UIViewController *controllerViste;
}

@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet UIViewController *controllerViste;

@end

Abbiamo semplicemente aggiunto un oggetto di tipo “UIViewController” di nome “controllerViste” e dichiarato la rispettiva “property”. Apriamo quindi “myViewAppDelegate.m” e modifichiamolo come segue:

#import "myViewAppDelegate.h"

@implementation myViewAppDelegate

@synthesize window, controllerViste;

- (void)applicationDidFinishLaunching:(UIApplication *)application {    

    // Override point for customization after application launch
	[window addSubview:controllerViste.view];
        [window makeKeyAndVisible];
}

- (void)dealloc {
	[controllerViste release];
        [window release];
        [super dealloc];
}

@end 

Per quanto riguarda il codice è tutto. Apriamo Interface Builder facendo doppio click sul file “MainWindow.xib” e iniziamo a creare le nostre viste. Per prima cosa inseriamo un UIViewController e 3 UIView nel progetto facendo semplicemente doppio click su questi oggetti dalla “Library”. Trasciniamo quindi la prima vista dentro il nostro UIViewController. Dobbiamo ottenere una configurazione come quella mostrata in figura (non fate caso al nome “Controller Viste” in figura, voi al suo posto avrete “View Controller”):


t009_IB_01

Clicchiamo quindi su “View Controller”, apriamo la finestra “View Controller Identity” e selezioniamo “controllerViste” dall’elenco a scelta multipla “Class”. Apriamo ora le UIView una alla volta e inseriamo all’interno di ognuna 1 UILabel, impostado la sua proprietà “Text” con il numero che identifica la vista, e 2 UIButton inserendo nella proprietà “Title” rispettivamente “Vai alla vista 1”, “Vai alla vista 2” o “Vai alla vista 3” in base alla View in cui vi trovate. Dovete ottenere 3 View simili all’esempio qui sotto:


t009_IB_03

Ora dobbiamo effettuare i collegamenti tra gli oggetti appena creati e i rispettivi dichiarati via codice in Xcode. Cliccate quindi su “Controller Viste” e dalla finestra “Controller Viste Connection” effettuate i collegamenti come mostrato nella prossima immagine:


t009_IB_02

Collegando i metodi ai pulsanti, che come potete vedere hanno collegamenti multipli, fate attenzione a selezionare “Touch Up Inside” dal menù che compare rilasciando il mouse durante il collegamento. Fate inoltre attenzione a collegare correttamente le viste. Per l’ultimo collegamento in figura, nella categoria “Referencing Outlets”, dovete cliccare su “My View App Delegate” e dalla finestra “My View App Delegate Connections” collegate l’Outlet “controllerViste” con “Controller Viste”. Potete ora salvare e chiudere Interface Builder. Torniamo su Xcode e premiamo “Build and Run” per testare la nostra applicazione su iPhone Simulator o direttamente sul nostro dispositivo. Il risultato è mostrato nella prossima e ultima immagine:


t009_IS

Video Tutorial

by David Pollak



Share this story:
  • tweet

Tags: Objective-cprogrammazioneTutorial PraticiUIViewControllerXcode

Recent Posts

  • Parte il percorso programmatori iOS in Swift su devACADEMY.it

    20 Dicembre 2017 - 0 Comment
  • Android, crittografare dati velocemente con Encryption

    24 Settembre 2018 - 0 Comment
  • Sql2o, accesso immediato ai database tramite Java

    3 Settembre 2018 - 0 Comment
  • Okio, libreria per ottimizzare l’input/output in Java

    27 Agosto 2018 - 0 Comment

Related Posts

  • Microservizi per logiche applicative di grandi dimensioni

    27 Luglio 2016 - 0 Comment
  • Con Xcode 6.3 arriva il Crash Log Organizer

    26 Febbraio 2015 - 0 Comment
  • Xcode-project-generator: uno script per creare velocemente progetti Xcode

    21 Ottobre 2014 - 1 Comment

Author Description

25 Responses to “T#009 – Gestiamo più viste”

  1. 18 Novembre 2009

    Tweets that mention T#009 – Gestiamo più viste | devAPP -- Topsy.com

    […] This post was mentioned on Twitter by MitAPP, devAPP. devAPP said: Nuovo Tutorial online: "Gestiamo più viste" http://www.devapp.it/wordpress/t009-gestiamo-piu-viste.html […]

  2. 18 Novembre 2009

    Anderoli

    Molto chiaro, ma se volessi che le viste “scorressero” o volessi dare un’animazione per passare da una vista all’altra?

  3. 19 Novembre 2009

    Il Profeta

    Ciao Anderoli! E’ ormai un paio di mesi buoni che mi picchio con xcode (quindi NON sono un guru) comunque in questo tutorial gestiamo varie “viste” le quali vengono applicate su un solo file xib (MainWindow.xib).

    Ma questo tutorial ci mostra una sola delle due possibilità di gestire vari “FORM”, invece di usare uno XIB con tante view c’è anche la possibilità di usare un file xib per ogni singola View! Quindi 5 form = 5 view e 5 file XIB.

    Con questo ultimo metodo è possibile integrare vari effetti visivi (transizioni) tra un ipotetico passaggio dalla View1 alla View2.

    Per qualsiasi altra info sono QUI! 😉

  4. 20 Novembre 2009

    Staff devAPP

    Nei prossimi tutorial affronteremo altre tecniche per la gestione di più viste nelle nostre applicazioni 😉

  5. 21 Marzo 2010

    Appo

    i file di esempio non puoi caricarli?

  6. 21 Marzo 2010

    millenomi

    Il contratto di UIViewController specifica che un VC può settare la propria .view SOLO E SOLTANTO in -loadView (o attraverso il NIB, che è lo stesso poiché viene fatto dall’implementazione di default di loadView).

    Il metodo giusto è avere una vista contenitore come .view e poi effettuare addSubview:/removeFromSuperview con le viste ausiliare.

  7. 26 Marzo 2010

    iManu

    Ho seguito il tutorial in tutti i suoi punti ma alla fine mi son arenato.
    All’avvio dell’applicazione mi da pagina bianca! Senza caricare la prima view.

    Il codice non mi segnala errori, in Interface Builder ho effettuato tutti i collegamenti….dove posso ancora controllare?

    Grazie

  8. 26 Marzo 2010

    Staff devAPP

    iManu :

    Ho seguito il tutorial in tutti i suoi punti ma alla fine mi son arenato.
    All’avvio dell’applicazione mi da pagina bianca! Senza caricare la prima view.

    Il codice non mi segnala errori, in Interface Builder ho effettuato tutti i collegamenti….dove posso ancora controllare?

    Grazie

    Apri un topic sul forum e se puoi postaci un link al progetto che gli diamo un’occhiata 😉

  9. 29 Marzo 2010

    Video Tutorial di programmazione iPhone SDK (in italiano) | devAPP

    […] In questo tutorial vedremo uno dei tanti modi possibili di gestire più viste all’interno delle nostre applicazioni. Per far ciò creeremo una classe, la cui superclasse sarà UIViewController che si occuperà avviare la vista principale e conterrà il codice per navigare tra le varie viste disponibili. (visualizza l’articolo completo) […]

  10. 5 Aprile 2010

    BQuadra

    Complimenti! bella e utile 😀 ciao

  11. 31 Maggio 2010

    Giuseooe

    volevo solo sapere perchè il tutorial video è diverso cioè finziona anche senza modificare #import “myViewAppDelegate.h”, vorrei sapere se è la stessa cosa?

  12. 9 Novembre 2010

    FP

    Gran bella guida! complimenti! ho seguito il video e devo dire che mi sono trovato molto molto bene! grazie!! 🙂

  13. 6 Dicembre 2010

    devAPP – Tutorial Set #2 - iPhone Italia – Il blog italiano sull'Apple iPhone 4, iPhone 3GS e 3G

    […] (Vai al tutorial completo) […]

  14. 24 Dicembre 2010

    Vincenzo Ferrara

    Ciao, Questo sito mi sta dando veramente dei buoni spunti.:)
    Vengo al punto: Come si fa a inserire, al posto di una UIView, una UITabView?
    L’applicazione si pianta, non carica nemmeno la prima view…
    Grazie..:) Buon Natale.

  15. 24 Dicembre 2010

    Vincenzo Ferrara

    scusate, non una UITabView ma una UITableView..

  16. 30 Dicembre 2010

    Vincenzo Ferrara

    Ho risolto, grazie..:)

  17. 1 Gennaio 2011

    Gianluca

    ciao a tutti, sarei interessato a capire come passare da una view presente nella relativa xib ad un’altra view presenta in un’altra xib.
    Quindi il passaggio da una view all’altra senza avere le view in un solo file xib.
    E’ possibile?
    Esiste un tutorial?
    Grazie mille

  18. 31 Gennaio 2011

    Alex

    Ciao,
    grazie per tutti questi tutorials, sei molto bravo a spiegare!

    Volevo però dirti che spesso il codice riportato nell’articolo non è identico a quello del video. Qui ad esempio UIViewController si chiama ControllerVista e non CambioVista e questo, anche se è banale, al neofita come me induce confusione, perchè genera errori sul compilatore (scoperto l’arcano, ho risolto subito 😉 )

    Grazie ancora, spero continuate con tutorials sempre più complicati, fino alla realizzazione di applicazioni complete.

  19. 20 Marzo 2011

    Matteo

    Potete caricare il progetto? Ho avuto qualche problema e vorrei cercare di risolverlo…grazie mille!

  20. 20 Marzo 2011

    Matteo

    QUESTO è IL MIO CODICE:
    Qualcuno mi dice dove sbaglio?
    Già al secondo passaggio ho “13” errori… 🙁

    “#import “CambioVistaViewController.h”

    @implementation CambioVistaViewController

    @synthesize vistaUno, vistaDue, vistaTre;

    -(IBAction)vaiUno{
    self.view = vistaUno;
    }

    -(IBAction)vaiDue{
    self.view = vistaDue;
    }

    -(IBAction)vaiTre{
    self.view = vistaTre;
    }

    – (void)dealloc
    {
    [super dealloc];
    }

    – (void)didReceiveMemoryWarning
    {
    // Releases the view if it doesn’t have a superview.
    [super didReceiveMemoryWarning];

    // Release any cached data, images, etc that aren’t in use.
    }

    #pragma mark – View lifecycle

    // Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
    – (void)viewDidLoad {
    [super viewDidLoad];
    self.view = vistaUno;
    }

    – (void)viewDidUnload
    {
    [super viewDidUnload];
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
    }

    – (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
    {
    // Return YES for supported orientations
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
    }

    @end”

  21. 21 Marzo 2011

    manueloco

    Il punto e virgola “;” dopo vaiUno,Due,Tre…. ti consiglio di guardare il video che spiega meglio questo metodo visto che è un po diverso di quello scritto…

  22. 24 Maggio 2011

    MaveDev

    Grazie anche per questo tutorial, molto utile la gestione di piu’ view

  23. 9 Gennaio 2012

    Stefano

    Ciao a tutti, vi ringrazio molto per il tutorial, perchè essendo veramente nuovo di Xcode non sapevo da dove cominciare, ho un problema, ho seguito attentamente il videotutorial, ma alla fine quando quando lancio il simulatore, mi compare una pagina bianca e sta ferma lì e non so il perchè.
    Quindi cercavo il vostro aiuto.
    Grazie

  24. 20 Maggio 2013

    antonio

    ciao,

    ho inserito in una delle 3 viste un iAd banner ma non funziona, mi da l’errore ADBannerView must be part of a view hierarchy managed by a UIViewController.
    Aiuto!! Cosa significa?

  25. 20 Maggio 2013

    antonio

    Ciao,

    Ho inserito in una delle 3 viste un iAd banner ma non funziona, mi da l’errore ADBannerView must be part of a view hierarchy managed by a UIViewController.
    Cosa significa?

    Antonio.

Leave a Reply

Your email address will not be published. Required fields are marked *


*
*

Corso online di programmazione android e java

SEZIONI

  • Android
  • Comunicazioni
  • Contest
  • Corsi ed Eventi
  • Corso completo di C
  • Corso programmazione videogiochi
  • Framework
  • Grafica e Design
  • Guida rapida alla programmazione Cocoa Touch
  • Guide Teoriche
  • Guide varie
  • iPad
  • Le nostre applicazioni
  • Libri e manuali
  • Materiale OpenSource
  • News
  • Pillole di C++
  • Progetti completi
  • Risorse utili
  • Strumenti di Sviluppo
  • Swift
  • Tips & Tricks
  • Tutorial Pratici
  • Video Tutorial
  • Windows Phone

Siti Amici

  • Adrirobot
  • Allmobileworld
  • Apple Notizie
  • Apple Tribù
  • Avvocato360
  • Blog informatico 360°
  • bubi devs
  • fotogriPhone
  • GiovaTech
  • iApp-Mac
  • iOS Developer Program
  • iPodMania
  • MelaRumors
  • Meritocracy
  • SoloTablet
  • TecnoUser
  • Privacy & Cookie Policy
©2009-2018 devAPP - All Rights Reserved | Contattaci
devAPP.it è un progetto di DEVAPP S.R.L. - Web & Mobile Agency di Torino
Str. Volpiano, 54 - 10040 Leini (TO) - C.F. e P.IVA 11263180017 - REA TO1199665 - Cap. Soc. € 10.000,00 i.v.

devACADEMY.it

Vuoi imparare a programmare?

Iscriviti e accedi a TUTTI i corsi con un’unica iscrizione.
Oltre 70 corsi e migliaia di videolezioni online e in italiano a tua disposizione.

ISCRIVITI SUBITO