Подтвердить что ты не робот

Xamarin Forms - Избавление от кнопки Back в Nav Bar

Предположим, что первая страница в приложении - это страница входа в систему, а затем мне нужно сделать экран главного меню, есть ли способ избавиться от кнопки "Назад" в панели навигации главного меню, например, избавиться от стек страницы входа?

Благодарю вас

4b9b3361

Ответ 1

В Xamarin.Forms 1.3 и выше вы можете использовать

NavigationPage.SetHasBackButton(this, false);

В Xaml вы можете добавить:

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

Ответ 2

Вы можете избежать нажатия кнопки "Назад", если вы замените Navigation.PushAsync(page) на Navigation.PushModalAsync(page) на свой код страницы входа. Поместите некоторый код, если это как-то не применяется.

Это связано с тем, как навигация работает в базовой операционной системе (по крайней мере, в iOS) - есть контроллер навигации, который служит для перехода страниц друг к другу и имеет след предыдущего экрана, чтобы пользователь мог вернуться.

Ответ 3

Есть два способа избавиться от кнопки "Назад":
1) Вы можете удалить панель навигации из Xaml, используя Xamarin.Forms, используя ниже код

NavigationPage.SetHasNavigationBar (this, false);

Где this обозначает текущий экземпляр страницы/формы.

2) Следуйте нижеуказанным шагам

  • Перейдите на страницу входа, когда приложение загружается с помощью обычного ContentPage экземпляра страницы входа
  • Перейдите на главную страницу со страницы входа с помощью PushModalAsync и укажите экземпляр главной страницы как NavigationPage
  • И затем со всех других страниц вы можете использовать PushAsync, и это позволит вам перемещаться по всем страницам без каких-либо ошибок.

Надеюсь, это поможет!

Ответ 4

Используя 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 ...
}