Chiudi il Menu
iSpazioiSpazio
  • Notizie
  • Offerte iSpazio
  • Sfondi
  • Downloads
  • Recensioni
  • iOS 26
  • Sconti Amazon
Menu Espanso
  • Home
  • Forum
  • Notizie
  • Offerte iSpazio
  • iOS 26
  • iPhone 16
  • Downloads
  • Guide
  • Sconti Amazon
  • Contatti
  • Pubblicità
Facebook X (Twitter) Instagram YouTube TikTok
iSpazioiSpazio
  •  Forum
  • Offerte iSpazio
  • Wallpapers Central
  • Teslers
Scarica l'App
  • Offerte
  • Sfondi
  • Guide
    • Personalizzazione
    • Video Guide TikTok
  • Recensioni
  • Downloads
    • Sfondi
    • Suonerie
    • Comandi Rapidi
    • Sfondi Personalizzati
    • Widget e Altro
    • iOS
    • iTunes
  • Dispositivi Apple
    1. iPhone
    2. iPad
    3. Mac
    4. Apple Watch
    5. iOS 26
    6. Vedi tutto

    Apple vuole mantenere invariato il prezzo di partenza dell’iPhone 18

    28 Gen 2026

    Apple aggiorna iPhone 5s e iPhone 6 con un nuovo firmware a oltre dieci anni dal lancio

    27 Gen 2026

    Apple continua a macinare utili nonostante l’aumento dei costi della RAM

    21 Gen 2026

    Il tuo iPhone 17 Pro Arancione cosmico diventerà rosa? I test danno una risposta chiara

    21 Gen 2026

    Apple rilascia nuovi aggiornamenti per vecchie versioni di iOS, macOS e watchOS

    3 Feb 2026

    Pixelmator Pro arriva su iPad con Apple Creator Studio: tutte le novità della nuova app

    29 Gen 2026

    Apple annuncia l’arrivo di Pixelmator Pro su iPad

    13 Gen 2026

    iPadOS 26.2 e macOS 26.2 sbloccano un Wi-Fi più veloce su alcuni Mac e iPad

    6 Gen 2026

    I nuovi MacBook Pro con M5 Pro e M5 Max sembrano ormai imminenti

    4 Feb 2026

    Apple rilascia nuovi aggiornamenti per vecchie versioni di iOS, macOS e watchOS

    3 Feb 2026

    Nuovi MacBook Pro con chip M5 attesi con macOS 26.3

    2 Feb 2026

    Apple semplifica l’acquisto dei Mac eliminando le configurazioni predefinite

    2 Feb 2026

    Apple rilascia nuovi aggiornamenti per vecchie versioni di iOS, macOS e watchOS

    3 Feb 2026

    Un avviso di frequenza cardiaca elevata dell’Apple Watch ha salvato la vita a un giornalista

    29 Gen 2026

    Strava e Komoot portano finalmente le mappe offline su Apple Watch

    29 Gen 2026

    Apple rilascia watchOS 26.2.1: la funzione “Posizione precisa” per AirTag arriva su Apple Watch

    27 Gen 2026

    Apple rilascia la Release Candidate di iOS 26.3: tra una settimana sarà disponibile per tutti gli utenti

    4 Feb 2026

    MagFone Location Changer: cambia la posizione GPS su iPhone e Android (senza jailbreak o root) | QuickApp

    4 Feb 2026

    I nuovi MacBook Pro con M5 Pro e M5 Max sembrano ormai imminenti

    4 Feb 2026

    iOS 26.2.1: segnalati crash, battery drain e molti altri bug

    4 Feb 2026

    Apple rilascia la Release Candidate di iOS 26.3: tra una settimana sarà disponibile per tutti gli utenti

    4 Feb 2026

    MagFone Location Changer: cambia la posizione GPS su iPhone e Android (senza jailbreak o root) | QuickApp

    4 Feb 2026

    I nuovi MacBook Pro con M5 Pro e M5 Max sembrano ormai imminenti

    4 Feb 2026

    iOS 26.2.1: segnalati crash, battery drain e molti altri bug

    4 Feb 2026
  • iPhone 17
  • iOS 26
  • Sconti Amazon
Contatti
Pubblicità
iSpazioiSpazio
  • Notizie
  • Offerte iSpazio
  • Sfondi
  • Downloads
  • Recensioni
  • iOS 26
  • Sconti Amazon
iPhone

iSpazio Developer Program #11 – Come gestire più viste create con Interface Builder

Andrea BusiDi Andrea Busi26 Feb 2009Commenta8 min di lettura
Condividi Facebook Twitter Telegram WhatsApp Copia Link Threads Email
Share
Facebook Twitter WhatsApp Telegram Threads Email Copia Link
In qualità di Affiliato Amazon, iSpazio riceve una commissione dagli acquisti idonei senza alcun costo per voi. (info).
Icona Cerchi Prodotti Apple ed accessori Tech in sconto?

Cerchi Prodotti Apple ed accessori Tech in sconto?

Segui il nostro canale @scontiamolo su Telegram!

Advertising

Eccoci con un nuovo tutorial nell’iSpazio Developers Program, dedicato alla programmazione con l’SDK per iPhone. Questa volta (su richiesta di parecchi utenti) ho deciso di trattare un argomento abbastanza ostico in XCode, ovvero la gestione di più viste create con Interface Builder. IB è uno strumento davvero ottimo che ci permette di creare la parte grafica della nostra applicazione senza grossi sforzi, ma spesso poi diventa problematico gestire tutte le vise via codice. In questo tutorial vedremo come creare due viste distinte, e come passare da una all’altra mediante un semplice bottone.

Prima di iniziare devo premettere che questo tutorial è un pochino lungo, ma ho volutamente cercato di non saltare nessun passaggio per permettervi una maggiore comprensione. Se trovate qualche errore o qualche punto non ben chiaro non esitate a segnalarlo nei commenti!

TUTORIAL:

  1. Creiamo un nuovo progetto
  2. Creiamo la vista principale dell’applicazione
  3. Creiamo la vista (e la classe) “VistaUno”
  4. Facciamo caricare la prima vista all’avvio dell’applicazione
  5. Creiamo la vista (e la classe) “VistaDue”
  6. Impostiamo le azioni per muoverci tra le viste

1. Creiamo un nuovo progetto

Aprimo Xcode, selezioniamo “File -> New Project”. Nel menù che ci appare selezioniamo “ViewBased Application”, clicchiamo su “Choose…” e immettiamo come nome “viewTutorial” e fate clic su “Save”. Abbiamo così creato il nostro nuovo progetto.

Prima di fare qualsiasi altra operazione, selezioniamo nell’editor Xcode la cartella “Resources” del nostro progetto ed eliminiamo il file “viewTutorialViewController.xib”. Basterà cliccare con il tasto destro sul file, selezionare “Delete” e poi cliccare su “Also move to Trash”.

2. Creiamo la vista principale dell’applicazione

Una volta eseguite queste semplici operazioni, andiamo a creare l’interfaccia grafica della nostra applicazione. Facciamo doppio click sul file “MainWindow.xib”, si aprirà così l’Interface Builder, con cui ormai abbiamo già preso conoscenza.
Selezioniamo la vista della nostra applcazione, e apriamo l’Attribute Inspector. Nel campo “NIB Name” eliminiamo la voce “viewTutorialViewController” (semplicemente cancellando il testo), ovvero il file che abbiamo cancellato in precedenza.

immagine-165

Se premiamo poi invio e torniamo a selezionare la vista vedremo che essa ha mutato la scritta centrale, ed ora apparirà così:

immagine-232

Ora, dalla libreria (”Tools -> Library”) selezioniamo un componente di tipo “View” e trasciniamolo nella nostra applicazione. Andiamo poi in “Identity Inspector” e in Class scriviamo “MainView”.

Abbiamo creato la vista principale della nostra applicazione. In questo tutorial questa vista non ci servirà a molto, ma avrà solo il compito di ospitare le altre viste, che verrano richiamate da apposite azioni.

Ora, salviamo subito la classe relativa a questa vista, selezionando “File -> Write Class Files…” e salviamo la classe “MainView” nella cartella Classes del nostro progetto.

immagine-329

Clicchiamo su “Save” e nella schermata successiva selezioniamo il nostro progetto prima di cliccare su “Add”

immagine-421

3. Creiamo la vista (e la classe) “VistaUno”

Iniziamo ora a creare una prima vista, che chiameremo “vistaUno”, e verrà caricata di default all’avvio dell’applicazione. Tramite un bottone contenuto in questa vista sarà poi possibile aprire una seconda vista, che chiameremo “vistaDue”. Iniziamo, però, a creare la prima vista.

Inseriamo all’interno del file “MainWindow.xib” una vista (una UIView), in modo da avere un risultato come questo:

immagine-514

Se non visualizzate questo pannello, vi basterà andare nel menù “Window -> Document”. Facciamo ora doppio clic sulla vista appena inserita, e inseriamo i componenti a nostro piacimento, l’importante che ci sia almeno un bottone, avendo un risultato simile a questo:

immagine-613

Ora dobbiamo, come al solito, inserire gli elementi e le azioni. Entriamo nel pannello “Identity Inspector”, e inseriamo i seguenti componenti:

immagine-711

Come potete vedere abbiamo dichiarato la classe come “VistaUno”, e abbiamo inserito un componente “mainView”, che si riferisce alla vista principale, la “MainView”, quella che abbiamo detto gestire tutte le altre viste. Abbiamo, inoltre, dichiarato un’azione “vaiAsecondaView”, che dovremo associare al bottone presente in questa vista.
Entriamo, ora, in “Connections Inspector”, e colleghiamo l’azione “vaiAsecondaView” al bottone, selezionando “Touch Up Inside” quando appare il seguente pannello:

immagine-87

Colleghiamo, poi, l’elemento “mainView” con la vista principale, quella che abbiamo creato inizialmente, trascinando il solito pallino proprio sulla vista “MainView”. Se abbiamo eseguito tutto correttamente dovremmo avere un risultato come questo:

immagine-95

Abbiamo così configurato correttamente la prima vista da Interface Builder. Salviamo la classe selezionando sempre “File -> Write Class Files…” e assicurandoci che appaia il nome “VistaUno” per la classe (se non appare significa che abbiamo sbagliato qualcosa):

immagine-105

E ricordiamoci di spuntare il nostro progetto nella finestra che appare subito dopo aver cliccato su “Save”. Salviamo tutto e chiudiamo Interface Builder, tornando a XCode.

4. Facciamo caricare la prima vista all’avvio dell’applicazione

Ora dobbiamo fare in modo che questa vista (la “VistaUno”) venga caricata in automatico all’avvio dell’applicazione. Iniziamo a completare la dichiarazione della classe “VistaUno”, entrando nel file “VistaUno.h”. Completiamo il codice presente nel seguente modo:

immagine-1113

In questo passaggio abbiamo solamente completato l’intestazione.Dobbiamo, ora, implementare il metodo “vaiAsecondaView”. Il codice da inserire nel file “VistaUno.m” è il seguente:

immagine-271

Come potete notare questo metodo non compie nessuna azione sulle viste, ma richiama un metodo di “mainView” (che andremo a definire in seguito) che si occuperà della gestione di questa azione.

Torniamo, ora, nella classe “MainView”, a cui dobbiamo dire di caricare all’avvio la “vistaUno”. Apriamo il file “MainView.h” e, anche in questo caso, completiamo il codice già presente nel seguente modo:

immagine-1211

Abbiamo così dichiarato la nostra “vistaUno”. Ma come facciamo a caricarla all’avvio? Chi di voi ha seguito anche i vecchi tutorial, potrebbe ricordare che esiste un metodo che viene eseguito proprio all’avvio dell’applicazione: si tratta di “awakeFromNib”. Entriamo, quindi, in “MainView.m” e inseriamo il seguente codice:

immagine-1311

Questo metodo non fa altro che settare la “vistaUno” come “Subview”, ovvero come sotto-vista (ogni tanto XCode non è proprio intuitivo..). Abbiamo finito? Quasi! Ci manca ancora una piccola cosa. Dobbiamo collegare la “vistaUno”, che abbiamo appena dichiarato in “MainView”, con la vista effettiva che vogliamo che venga caricata. Questa operazione va eseguita, come sempre, in Interface Builder. Salviamo quindi tutti i file (io preferisco eseguire un “Build” per essere più sicuro) ed entriamo in Interface Builder, aprendo il file “MainWindow.xib”.
Entrando, ora, in “Connections Inspector” della vista “MainView” vedremo che è comparso un nuovo elemento, ovvero proprio la “vistaUno” che abbiamo appena dichiarato. La nostra finestra delle connessioni avrà il seguente aspetto:

immagine-1410

Dobbiamo semplicemente collegare questo elemento con la vista che vogliamo far caricare all’avvio, ovvero la “VistaUno” che abbiamo creato poco fa (per intenderci, quella composta dall’uno in grande e dal bottone). Trasciniamo il pallino che troviamo a fianco di “vistaUno” sulla vista corretta. Se abbiamo fatto le cose in maniera corretta avremo questo risultato:

immagine-1510

Chiudiamo Interface Builder salvando tutto. Clicchiamo ora su “Build and Go!” e se abbiamo eseguito tutto in maniera corretta si aprirà la nostra applicazione:

immagine-166

5. Creiamo la vista (e la classe) “VistaDue”

Abbiamo, fino ad adesso, creato e impostato la prima vista. Dobbiamo, ora, creare anche una seconda vista, che verrà aperta cliccando sul bottone presente nella nostra applicazione. Il procedimento è lo stesso che abbiamo utilizzato poco fa, quindi milimiterò a riportare i passaggi chiave.

Inseriamo una nuova vista nel nostro file “MainWindow.xib” (come fatto al punto 3) e inseriamo gli elementi a nostro piacere, avenendo cura di inserire almeno un bottone, che ci servirà per tornare alla “vistaUno”. La nostra vista si presenterà come questa:

immagine-172

I componenti e le azioni da impostare saranno le stesse della “VistaUno”, quindi il vostro pannello “Identity Inspector” apparirà così:

immagine-181

Mentre il pannello “Connections Inspector” avrà i seguenti elementi (che colleghiamo proprio come abbiamo fatto per la “VistaUno”):

immagine-192

Salviamo la nuova classe “VistaDue” e aggiungiamola come sempre al nostro progetto. Salviamo tutto e usciamo da Interface Builder.

6. Impostiamo le azioni per muoverci tra le viste

Prima di procedere all’inserimento del codice che controlla la navigazione tra le viste, dobbiamo concludere la dichiarazione della classe “VistaDue” (come abbiamo già fatto nel punto 4 per “VistaUno”). Aggiungiamo il seguente codice al file “VistaDue.h”:

immagine-201

Adesso andiamo a scrivere il codice relativo a tutti i metodi che ci servono, e che non abbiamo ancora implementato. Iniziamo dal file “VistaDue.m”, in cui delegheremo ancora l’azione alla classe “MainView”, proprio come abbiamo fatto in precedenza.

immagine-2110

Tutto come abbiamo già fatto per “VistaUno”.

Ora è giunto il momento di impostare la classe MainView, e tutti i metodi che gli abbiamo delegato. Apriamo il file “MainView.h” e completiamo la dichiarazione della classe nel seguento modo:

immagine-2210

Anche in questo caso non abbiamo fatto niente di particolare. Possiamo notare che abbiamo definito le due viste (“vistaUno” e “vistaDue”), e le due azioni (che potete riconoscere dal tipo di ritorno “IBAction”), che ora dobbiamo definire. Apriamo il file “MainView.m” e scriviamo il seguente codice:

immagine-233

Finalmente abbiamo definito i due metodi che si occupano della gestione delle viste. Potete vedere che sono praticamente uguali: prima rimuovono la vista presente e poi aggiungono quella nuova, ovvero quella da visualizzare.

Abbiamo quasi concluso! Salviamo tutti i file (io consiglio sempre di eseguire un “Build”) e torniamo in Interface Builder, aprendo il file “MainWindow.xib”. Nel “Connections Inspector” della vista principale (la “MainView”) dovreste vedere l’ultimo elemento che non abbiamo ancora collegato, ovvero la “vistaDue”:

immagine-241

Colleghiamo “vistaDue” con la seconda vista, proprio come abbiamo già fatto in precedenza con la “vistaUno). Il risultato di tale operazione sarà il seguente:

immagine-251

Ora abbiamo davvero finito! Salviamo tutto, chiudiamo Interface Builder e da XCode selezioniamo “Build and Go!”. Ecco la vostra applicazione finalmente funzionante:

immagine-26

Se Avete Problemi, questo è il nostro file di progetto.

La guida è stata creata da Andrea Busi per “iSpazio.net” e “Bubi Devs”, prendendo spunto dal seguente video tutorial in lingua inglese: “Multiple NIB Files – iPhone Development Central“. I meriti quindi relativamente alla versione inglese, sono del legittimo autore.

Sai che siamo anche su Telegram? Unisciti al nostro canale iSpazio per ricevere le notifiche oppure Apple Italia per chattare con altri utenti. Scopri i migliori prodotti Tech in sconto su Amazon con il nostro canale OFFERTE iSpazio.
Icona dell'applicazione Le Migliori Offerte Amazon disponibile su App Store

Le Migliori Offerte Amazon

Selezionate dalla redazione di iSpazio
GUARDALE LIVE  
  • Filtra:
  • Tutte
  • Apple
  • Minimo Storico
  • Alimentari e cura della casa
  • Auto e moto
  • Casa e cucina
  • Giochi e giocattoli
  • Informatica
  • Salute e cura della persona
  • Sport e tempo libero
18%  
Ninja Prestige Macchina per caffè filtrato e in capsule 2 in 1, con schiumatore integrato, per latte, caffè con ghiaccio e flat white, nero CFN802EU
08:47
Ninja Prestige Macchina per caffè filtrato e in capsule 2 in 1, con schiumatore integrato, per latte, caffè con ghiaccio e flat white, nero CFN802EU243,92€199,99€
31%
Muc-Off C3 Ceramic Dry Chain Lube, 120 ml – Grasso Ceramico per Catena, Lubrificante Catena Bici con Colorante Tracciante UV – Formulato per Climi Asciutti e Polverosi
08:37
Muc-Off C3 Ceramic Dry Chain Lube, 120 ml – Grasso Ceramico per Catena, Lubrificante Catena Bici con Colorante Tracciante UV – Formulato per Climi Asciutti e Polverosi15,00€10,40€
33%
FITNESS Original Cereali Integrali 375g
08:34
FITNESS Original Cereali Integrali 375g2,99€1,99€
43%  
Muc-Off Motorcycle Care Duo Kit – Kit Pulizia Moto per Pulire e Proteggere la tua Moto – Include 1 l di Detergente Moto e 500 ml di Spray Protettivo Moto
08:31
Muc-Off Motorcycle Care Duo Kit – Kit Pulizia Moto per Pulire e Proteggere la tua Moto – Include 1 l di Detergente Moto e 500 ml di Spray Protettivo Moto22,99€13,00€
68%
Muc-Off E-Bike Dry Chain Lube, 50 ml – Grasso Ceramico per Bici Elettriche di Alta Qualità, Lubrificante Ceramico Bici con Colorante Tracciante UV – Formulato per Condizioni Atmosferiche Asciutte
08:26
Muc-Off E-Bike Dry Chain Lube, 50 ml – Grasso Ceramico per Bici Elettriche di Alta Qualità, Lubrificante Ceramico Bici con Colorante Tracciante UV – Formulato per Condizioni Atmosferiche Asciutte32,00€10,30€
47%  
Muc-Off Kit Pulizia Moto Essenziale – per la Manutenzione e la Pulizia della Moto – Include Pulitore Moto, Spray Protettivo Moto e Altri Accessori Moto
08:21
Muc-Off Kit Pulizia Moto Essenziale – per la Manutenzione e la Pulizia della Moto – Include Pulitore Moto, Spray Protettivo Moto e Altri Accessori Moto38,99€20,80€
48%  
Muc-Off Bike Care Duo Kit – Kit Pulizia Bici per Pulire e Proteggere la tua Bici – Include 1 Litro di Detergente Bici e 500 ml di Spray Protettore Bici Post-Lavaggio
08:17
Muc-Off Bike Care Duo Kit – Kit Pulizia Bici per Pulire e Proteggere la tua Bici – Include 1 Litro di Detergente Bici e 500 ml di Spray Protettore Bici Post-Lavaggio25,00€13,00€
23%
Proscenic P15 Aspirapolvere Senza Fili, 580W, 70 Min, 55Kpa Scopa Elettrica Senza Fili Potente, Asta Telescopica Regolabile e Design Autoportante, Tecnologia GreenEye, per Pavimenti, Tappeti
08:05
Proscenic P15 Aspirapolvere Senza Fili, 580W, 70 Min, 55Kpa Scopa Elettrica Senza Fili Potente, Asta Telescopica Regolabile e Design Autoportante, Tecnologia GreenEye, per Pavimenti, Tappeti159,99€123,49€
17%
Apple Portatile MacBook Air 13” con chip M4 (2025): progettato per Apple Intelligence, display Liquid Retina da 13,6”, 16GB di memoria unificata, 256GB di archiviazione SSD, Touch ID; Celeste
08:04
Apple Portatile MacBook Air 13” con chip M4 (2025): progettato per Apple Intelligence, display Liquid Retina da 13,6”, 16GB di memoria unificata, 256GB di archiviazione SSD, Touch ID; Celeste1.149,00€953,99€
45%  
Play-Doh Hasbro Marvel Distruggi e Schiaccia di Hulk, Set di Plastilina Creativa con 4 Vasetti di Pasta Modellabile, Action Figure di Hulk e Stampi, Idea Regalo per dai 4 Anni in su
08:02
Play-Doh Hasbro Marvel Distruggi e Schiaccia di Hulk, Set di Plastilina Creativa con 4 Vasetti di Pasta Modellabile, Action Figure di Hulk e Stampi, Idea Regalo per dai 4 Anni in su19,99€10,99€

Scarica la nostra app e leggi le notizie in mobilità. Porta iSpazio sempre con te, anche su Telegram.
| Applicazione iOS
Con l'applicazione ufficiale di iSpazio resterai sempre aggiornato sulle notizie Apple, video tutorial per iPhone e tanto altro. riceverai una notifica per ogni nuovo articolo. Puoi utilizzare anche i Widget per tenere le novità sott'occhio nella Home o nella Lockscreen.
Scaricala subito!
| Canale Telegram 10.700+ Utenti
Su Telegram invece, segnaliamo soltanto le notizie più importanti ed urgenti oppure i nostri nuovi video su YouTube. E' un canale molto interessante, assolutamente non invasivo perchè non inviamo troppe push, e vi consigliamo di seguirci anche lì.
Unisciti a noi!
ispazio notifiche
Seguici su Google News
Condividi Facebook Twitter Telegram WhatsApp Threads Email Copia Link
Articolo precedenteSway: Giocare con la fisica arrampicandosi | AppStore [Video]
Articolo successivo Cydia, possibile virus?

Articoli correlati

Apple vuole mantenere invariato il prezzo di partenza dell’iPhone 18

28 Gen 2026Commenta

Apple aggiorna iPhone 5s e iPhone 6 con un nuovo firmware a oltre dieci anni dal lancio

27 Gen 2026Commenta

Apple continua a macinare utili nonostante l’aumento dei costi della RAM

21 Gen 2026Commenta

Il tuo iPhone 17 Pro Arancione cosmico diventerà rosa? I test danno una risposta chiara

21 Gen 2026Commenta

Leggi o Aggiungi Commenti

Advertising

Da non perdere!

Apple rilascia la Release Candidate di iOS 26.3: tra una settimana sarà disponibile per tutti gli utenti

4 Feb 2026

Starlink sugli iPhone 18 Pro? Apple tratta con SpaceX

29 Gen 2026

Apple presenta AirTag 2: più preciso, più potente e ancora più utile per ritrovare gli oggetti

26 Gen 2026

Apple presenta il nuovo cinturino Black Unity intrecciato per Apple Watch

26 Gen 2026

Gli articoli più letti

MagFone Location Changer: cambia la posizione GPS su iPhone e Android (senza jailbreak o root) | QuickApp

I nuovi MacBook Pro con M5 Pro e M5 Max sembrano ormai imminenti

Info su iSpazio
Info su iSpazio

iSpazio è il punto di riferimento italiano per tutti gli appassionati Apple. Dal 2007, sul nostro sito trovi notizie, recensioni e guide per imparare ad utilizzare al meglio iOS, l'iPhone e tutti gli altri dispostivi dell'azienda.

Contattaci
Pubblicità

Il Network
Il Network

L'esperienza maturata su iSpazio ci ha portati, con il tempo, a realizzare altri progetti ed aprire nuovi siti con tematiche strettamente correlate al nostro Blog principale.

Oggi, siamo i fieri proprietari di un Network composto da: iSpazio, Scontiamolo, Wallpapers Central e Teslers.

Link Rapidi
  • Chi siamo
  • Contattaci
  • Legal
  • Privacy Policy
  • Pubblicità su
© Copyright 2026 iSpazio SRL | Partita IVA: 10137091210
  • Chi siamo
  • Contattaci
  • Legal
  • Privacy Policy
  • Pubblicità su

Scrivi quello che vuoi cercare e premi Invio.