Skip to content

Tornare alla schermata principale in una navigazione su iOS

Spesso capita di dover impostare diverse schermate su iOS per introdurre/selezionare dei dati e dopo aver navigato sull’ultima scheda, avere la necessità di tornare indietro alla schermata iniziale senza dover scorrere lo stack all’indietro. Vediamo un semplice metodo per ottenere questa funzionalità nella applicazioni Xojo per iOS.

Ad esempio abbiamo una view per impostare un  filtro di ricerca, e man mano che procediamo vogliamo attivare ulteriori filtri.

Ogni volta che facciamo il pushTo per mostrare una nuova view, questa viene aggiunta allo stack.

iOS fornisce la possibilità di tornare al livello precedente tramite il pulsante in alto a sinistra nella navigation bar, ma se vogliamo “riavvolgere” lo stack, dobbiamo utilizzare una funzionalità non presente nativamente in Xojo per iOS.

Il codice è molto semplice e basta aggiungerlo alla nostra libreria di funzioni da utilizzare come estensione per la iosView.

Sub popHome(extends view as iosView, animated as boolean=true)
    Declare Sub popToRoot Lib "UIKit" selector "popToRootViewControllerAnimated:"(oPtr As Ptr, animated As Boolean)
    Declare Function navCon lib "UIKit" selector "navigationController"(o As Ptr) As Ptr
    Dim nc As Ptr=navCon(view.Handle)
    popToRoot(nc, animated)
end sub

Per poi utilizzarla dove serve con un semplice

self.popToRoot

Questo metodo funziona sia quando la nostra view è in gruppo di tab che quando è indipendente.