{"id":847,"date":"2009-11-17T23:34:22","date_gmt":"2009-11-17T22:34:22","guid":{"rendered":"http:\/\/www.devapp.it\/wordpress\/?p=847"},"modified":"2010-03-29T12:20:28","modified_gmt":"2010-03-29T10:20:28","slug":"t009-gestiamo-piu-viste","status":"publish","type":"post","link":"https:\/\/www.devapp.it\/wordpress\/t009-gestiamo-piu-viste\/","title":{"rendered":"T#009 &#8211; Gestiamo pi\u00f9 viste"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2009\/11\/t009_IS.jpg\" alt=\"t009_IS\" title=\"t009_IS\" width=\"80\" height=\"120\" class=\"alignleft size-full wp-image-853\" srcset=\"https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2009\/11\/t009_IS.jpg 320w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2009\/11\/t009_IS-200x300.jpg 200w\" sizes=\"auto, (max-width: 80px) 100vw, 80px\" \/> In questo tutorial vedremo uno dei tanti modi possibili di gestire pi\u00f9 viste all&#8217;interno delle nostre applicazioni. Per far ci\u00f2 creeremo una classe, la cui superclasse sar\u00e0 UIViewController che si occuper\u00e0 avviare la vista principale e conterr\u00e0 il codice per navigare tra le varie viste disponibili. Apriamo Xcode, creiamo un nuovo progetto e dall&#8217;elenco dei template disponibili scegliamo &#8220;Window-based Application&#8221;. Clicchiamo col pulsante destro del mouse su &#8220;Classes&#8221; in &#8220;Groups &amp; Files&#8221;, quindi su &#8220;Add&#8221; e su &#8220;New File&#8230;&#8221;, dalla finestra che si apre clicchiamo su &#8220;UIViewController subclass&#8221; e premiamo il pulsante &#8220;Next&#8221; per proseguire.<!--more--> Diamo un nome al nuovo file, ad esempio &#8220;controllerViste&#8221;, facciamo attenzione che sia selezionata l&#8217;opzione &#8220;Also create controllerViste.h&#8221; e clicchiamo su &#8220;Finish&#8221;. Apriamo il file &#8220;controllerViste.h&#8221; appena creato e inseriamo il seguente codice:<\/p>\n<pre lang=\"objc\" escaped=\"true\">\r\n#import <UIKit\/UIKit.h>\r\n\r\n\r\n@interface controllerViste : UIViewController {\r\n\tIBOutlet UIView *vistaUno;\r\n\tIBOutlet UIView *vistaDue;\r\n\tIBOutlet UIView *vistaTre;\r\n}\r\n\r\n@property (nonatomic, retain) IBOutlet UIView *vistaUno;\r\n@property (nonatomic, retain) IBOutlet UIView *vistaDue;\r\n@property (nonatomic, retain) IBOutlet UIView *vistaTre;\r\n\r\n-(IBAction)vaiUno;\r\n-(IBAction)vaiDue;\r\n-(IBAction)vaiTre;\r\n\r\n@end\r\n<\/pre>\n<p>Cos\u00ec 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\u00f9 avanti. Apriamo ora il file di implementazione della nostra classe, &#8220;controllerViste.m&#8221; e inseriamo il codice dei metodi appena dichiarati nel file di interfaccia:<\/p>\n<pre lang=\"objc\" escaped=\"true\">\r\n@synthesize vistaUno, vistaDue, vistaTre;\r\n\r\n-(IBAction)vaiUno{\r\n\tself.view = vistaUno;\r\n}\r\n\r\n-(IBAction)vaiDue{\r\n\tself.view = vistaDue;\r\n}\r\n\r\n-(IBAction)vaiTre{\r\n\tself.view = vistaTre;\r\n}\r\n\r\n- (void)viewDidLoad {\r\n        [super viewDidLoad];\r\n\tself.view = vistaUno;\r\n}\r\n<\/pre>\n<p>Come vedete il codice per i 3 metodi \u00e8 molto semplice e non fa altro che mostrare la rispettiva vista. Abbiamo inoltre &#8220;scommentato&#8221; il metodo viewDidLoad e abbiamo impostato la vista principale che si aprir\u00e0 all&#8217;avvio dell&#8217;applicazione. Salviamo, apriamo &#8220;myViewAppDelegate.h&#8221; e modifichiamo il codice come segue:<\/p>\n<pre lang=\"objc\" escaped=\"true\">\r\n#import <UIKit\/UIKit.h>\r\n\r\n@interface myViewAppDelegate : NSObject <UIApplicationDelegate> {\r\n        UIWindow *window;\r\n\tUIViewController *controllerViste;\r\n}\r\n\r\n@property (nonatomic, retain) IBOutlet UIWindow *window;\r\n@property (nonatomic, retain) IBOutlet UIViewController *controllerViste;\r\n\r\n@end\r\n<\/pre>\n<p>Abbiamo semplicemente aggiunto un oggetto di tipo &#8220;UIViewController&#8221; di nome &#8220;controllerViste&#8221; e dichiarato la rispettiva &#8220;property&#8221;. Apriamo quindi &#8220;myViewAppDelegate.m&#8221; e modifichiamolo come segue:<\/p>\n<pre lang=\"objc\" escaped=\"true\">\r\n#import \"myViewAppDelegate.h\"\r\n\r\n@implementation myViewAppDelegate\r\n\r\n@synthesize window, controllerViste;\r\n\r\n- (void)applicationDidFinishLaunching:(UIApplication *)application {    \r\n\r\n    \/\/ Override point for customization after application launch\r\n\t[window addSubview:controllerViste.view];\r\n        [window makeKeyAndVisible];\r\n}\r\n\r\n- (void)dealloc {\r\n\t[controllerViste release];\r\n        [window release];\r\n        [super dealloc];\r\n}\r\n\r\n@end \r\n<\/pre>\n<p>Per quanto riguarda il codice \u00e8 tutto. Apriamo Interface Builder facendo doppio click sul file &#8220;MainWindow.xib&#8221; 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 &#8220;Library&#8221;. Trasciniamo quindi la prima vista dentro il nostro UIViewController. Dobbiamo ottenere una configurazione come quella mostrata in figura (non fate caso al nome &#8220;Controller Viste&#8221; in figura, voi al suo posto avrete &#8220;View Controller&#8221;):<\/p>\n<p><center><br \/>\n<img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2009\/11\/t009_IB_01.jpg\" alt=\"t009_IB_01\" title=\"t009_IB_01\" width=\"410\" height=\"414\" class=\"aligncenter size-full wp-image-850\" srcset=\"https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2009\/11\/t009_IB_01.jpg 410w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2009\/11\/t009_IB_01-150x150.jpg 150w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2009\/11\/t009_IB_01-297x300.jpg 297w\" sizes=\"auto, (max-width: 410px) 100vw, 410px\" \/><br \/>\n<\/center><\/p>\n<p>Clicchiamo quindi su &#8220;View Controller&#8221;, apriamo la finestra &#8220;View Controller Identity&#8221; e selezioniamo &#8220;controllerViste&#8221; dall&#8217;elenco a scelta multipla &#8220;Class&#8221;. Apriamo ora le UIView una alla volta e inseriamo all&#8217;interno di ognuna 1 UILabel, impostado la sua propriet\u00e0 &#8220;Text&#8221; con il numero che identifica la vista, e 2 UIButton inserendo nella propriet\u00e0 &#8220;Title&#8221; rispettivamente &#8220;Vai alla vista 1&#8221;, &#8220;Vai alla vista 2&#8221; o &#8220;Vai alla vista 3&#8221; in base alla View in cui vi trovate. Dovete ottenere 3 View simili all&#8217;esempio qui sotto:<\/p>\n<p><center><br \/>\n<img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2009\/11\/t009_IB_03.jpg\" alt=\"t009_IB_03\" title=\"t009_IB_03\" width=\"320\" height=\"502\" class=\"aligncenter size-full wp-image-851\" srcset=\"https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2009\/11\/t009_IB_03.jpg 320w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2009\/11\/t009_IB_03-191x300.jpg 191w\" sizes=\"auto, (max-width: 320px) 100vw, 320px\" \/><br \/>\n<\/center><\/p>\n<p>Ora dobbiamo effettuare i collegamenti tra gli oggetti appena creati e i rispettivi dichiarati via codice in Xcode. Cliccate quindi su &#8220;Controller Viste&#8221; e dalla finestra &#8220;Controller Viste Connection&#8221; effettuate i collegamenti come mostrato nella prossima immagine:<\/p>\n<p><center><br \/>\n<img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2009\/11\/t009_IB_02.jpg\" alt=\"t009_IB_02\" title=\"t009_IB_02\" width=\"287\" height=\"430\" class=\"aligncenter size-full wp-image-852\" srcset=\"https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2009\/11\/t009_IB_02.jpg 287w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2009\/11\/t009_IB_02-200x300.jpg 200w\" sizes=\"auto, (max-width: 287px) 100vw, 287px\" \/><br \/>\n<\/center><\/p>\n<p>Collegando i metodi ai pulsanti, che come potete vedere hanno collegamenti multipli, fate attenzione a selezionare &#8220;Touch Up Inside&#8221; dal men\u00f9 che compare rilasciando il mouse durante il collegamento. Fate inoltre attenzione a collegare correttamente le viste. Per l&#8217;ultimo collegamento in figura, nella categoria &#8220;Referencing Outlets&#8221;, dovete cliccare su &#8220;My View App Delegate&#8221; e dalla finestra &#8220;My View App Delegate Connections&#8221; collegate l&#8217;Outlet &#8220;controllerViste&#8221; con &#8220;Controller Viste&#8221;. Potete ora salvare e chiudere Interface Builder. Torniamo su Xcode e premiamo &#8220;Build and Run&#8221; per testare la nostra applicazione su iPhone Simulator o direttamente sul nostro dispositivo. Il risultato \u00e8 mostrato nella prossima e ultima immagine:<\/p>\n<p><center><br \/>\n<img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2009\/11\/t009_IS.jpg\" alt=\"t009_IS\" title=\"t009_IS\" width=\"320\" height=\"480\" class=\"aligncenter size-full wp-image-853\" srcset=\"https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2009\/11\/t009_IS.jpg 320w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2009\/11\/t009_IS-200x300.jpg 200w\" sizes=\"auto, (max-width: 320px) 100vw, 320px\" \/><br \/>\n<\/center><\/p>\n<p><center><\/p>\n<h4>Video Tutorial<\/h4>\n<p> by David Pollak<br \/>\n<\/center><\/p>\n<p><center><br \/>\n<object width=\"480\" height=\"385\"><param name=\"movie\" value=\"http:\/\/www.youtube.com\/v\/Fs7jknsWpzw&#038;hl=it_IT&#038;fs=1&#038;\"><\/param><param name=\"allowFullScreen\" value=\"true\"><\/param><param name=\"allowscriptaccess\" value=\"always\"><\/param><embed src=\"http:\/\/www.youtube.com\/v\/Fs7jknsWpzw&#038;hl=it_IT&#038;fs=1&#038;\" type=\"application\/x-shockwave-flash\" allowscriptaccess=\"always\" allowfullscreen=\"true\" width=\"480\" height=\"385\"><\/embed><\/object><br \/>\n<\/center><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In questo tutorial vedremo uno dei tanti modi possibili di gestire pi\u00f9 viste all&#8217;interno delle nostre applicazioni&#8230;.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[5,4,1,44,23],"class_list":["post-847","post","type-post","status-publish","format-standard","hentry","category-tutorial-pratici","tag-objective-c","tag-programmazione","tag-tutorial-pratici","tag-uiviewcontroller","tag-xcode"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/847","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/comments?post=847"}],"version-history":[{"count":15,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/847\/revisions"}],"predecessor-version":[{"id":2785,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/847\/revisions\/2785"}],"wp:attachment":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/media?parent=847"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/categories?post=847"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/tags?post=847"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}