Xamarin Forms - Избавление от кнопки Back в Nav Bar
Предположим, что первая страница в приложении - это страница входа в систему, а затем мне нужно сделать экран главного меню, есть ли способ избавиться от кнопки "Назад" в панели навигации главного меню, например, избавиться от стек страницы входа?
Благодарю вас
Ответы
Ответ 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 ...
}