2014-07-24 110 views
19

可以說,應用程序的第一頁是登錄頁面,然後它需要我做主菜單屏幕,有沒有辦法擺脫後退按鈕主菜單導航欄,就像擺脫登錄頁面堆棧?Xamarin窗體 - 擺脫導航欄中的後退按鈕

謝謝

+0

您能告訴我們您的登錄頁面的代碼嗎? –

回答

9

你可以避免後退按鈕,如果你更換Navigation.PushAsync(page)Navigation.PushModalAsync(page)在您的登錄頁面的代碼。發佈一些代碼,如果這不知何故不適用

這與導航如何在底層操作系統中工作(至少在iOS是這種情況) - 有一個導航控制器,爲頁面之間的轉換服務並有一絲前一幕,以便用戶可以回去。

+1

如果我想讓導航欄保留工具條,該怎麼辦? – user3841879

+1

應該爲頁面定義工具欄項目,而不是導航控制器 –

4

有2種方式來擺脫後退按鈕:使用下面的代碼
1)您可以刪除的XAML導航欄使用Xamarin.Forms

NavigationPage.SetHasNavigationBar (this, false); 

this代表當前頁/表單實例。

2)請按照以下提到的步驟

  • 導航使用PushModalAsync當應用程序被加載登錄頁面
  • 導航的主頁普通ContentPage例如,從登錄頁面登錄頁面,並提供主要頁面實例作爲NavigationPage
  • 然後從所有其他頁面,您可以使用PushAsync,它可以讓您導航到所有頁面沒有任何錯誤。

希望這有助於!

2

使用CustomRenderer,你調用viewWillAppear中此功能在您的自定義視圖控制器

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

在Xamarin.Forms 1.3和更大的可使用

NavigationPage.SetHasBackButton(this, false); 

Xaml您可以添加:

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

它工作得很好......順便說一下,XAML有可能嗎?只是一個好奇心.. –

+1

@shakin_hand_incision更新我的答案,包括'XAML'的方式 – user1

+0

這似乎仍然呈現與後退按鈕相關的空間(只是沒有後退按鈕可見)。有沒有辦法擺脫這個空間? – jbyrd