2014-07-24 13 views
19

Diciamo che la prima pagina nell'app è la pagina di accesso e poi mi porta a fare la schermata del menu principale, c'è un modo per sbarazzarsi del pulsante Indietro in la barra di navigazione del menu principale, come eliminare lo stack della pagina di accesso?Xamarin Forms - Come sbarazzarsi del pulsante Indietro in Nav Bar

ringraziamento

+0

Puoi mostrarci il codice della tua pagina di accesso? –

risposta

9

È possibile evitare di avere il pulsante Indietro se si sostituisce il Navigation.PushAsync(page) a Navigation.PushModalAsync(page) nel codice della pagina di login. Inserisci un codice se questo in qualche modo non si applica

Questo ha a che fare con il modo in cui funziona la navigazione nel sistema operativo sottostante (almeno in iOS è il caso) - c'è un controller di navigazione che serve per le pagine di transizione tra l'altro e avere una traccia dello schermo precedente in modo che l'utente possa tornare indietro.

+1

Che cosa succede se voglio mantenere la barra di navigazione per visualizzare toolbar? Le voci della barra degli strumenti – user3841879

+1

devono essere definite per la pagina, non per il controller di navigazione –

4

Ci sono 2 modi per sbarazzarsi di pulsante indietro:
1) È possibile rimuovere barra di navigazione da XAML utilizzando Xamarin.Forms utilizzando sottostante Codice

NavigationPage.SetHasNavigationBar (this, false); 

Dove this sta per pagina corrente/istanza modulo.

2) Seguire i passi sotto indicati

  • Accedere alla pagina di login quando l'applicazione viene caricato con normale ContentPage istanza di pagina di login
  • Accedere alla pagina principale dalla pagina Accedi usando PushModalAsync e fornire l'istanza pagina principale come NavigationPage
  • E poi da tutte le altre pagine, è possibile utilizzare PushAsync e ti permetterà di navigare verso tutte le pagine senza errori.

Spero che questo aiuti!

2

Utilizzando CustomRenderer, si chiama questa funzione nel viewWillAppear nel controller visualizzazione personalizzata

public override void ViewWillAppear (bool animated) 
{ 
    base.ViewWillAppear (animated); 
    this.ParentViewController.NavigationItem.SetHidesBackButton (true, false); 
    //remember to use ParentViewController to reference to the NavigationViewController (if your contentPage is direct under a navigation controller. I don't know why but Xamarin must have a bug with SetHidesBackButton. If you call with this.NavigationItem.SetHidesBackButton(...), it should not work. 
    ... other implements here ... 
} 
41

In Xamarin.Forms 1.3 e superiori è possibile utilizzare

NavigationPage.SetHasBackButton(this, false); 

In Xaml è possibile aggiungere:

<ContentPage ....NameSpaces etc.... 
    NavigationPage.HasBackButton="False" 
    Title="MyPage"> 
</ContentPage> 
+1

Funziona alla grande ... A proposito, è possibile da XAML? Solo una curiosità .. –

+1

@shakin_hand_incision Aggiornato la mia risposta per includere il modo 'XAML' – user1

+0

Questo sembra ancora rendere lo spazio associato al pulsante Indietro (solo senza il pulsante Indietro visibile). C'è un modo per sbarazzarsi di questo spazio? – jbyrd

Problemi correlati