Дублированная панель инструментов Xamarin Forms на главной странице сведений в iOS - PullRequest
0 голосов
/ 13 ноября 2018

У меня есть приложение с главной страницей и элементами панели инструментов для каждой страницы.Я установил главную страницу сведений и главную страницу в NavigationPage.HasNavigationBar = "False", чтобы избежать дублирования элементов панели инструментов.В Android он работает нормально и без дублирования, но для iOS он все еще дает дубликат для элементов панели инструментов, которые имеют Order = "Secondary"

Вот страница меню (страница сведений):

 <?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:controls="clr-namespace:ImageCircle.Forms.Plugin.Abstractions;assembly=ImageCircle.Forms.Plugin"
             xmlns:effects="clr-namespace:AppXamarin"
             x:Class="AppXamarin.Pages.MenuPage" NavigationPage.HasBackButton="False">
    <ContentPage.BackgroundImage>
        <OnPlatform Android="exp20181029Artboard46" iOS="{OnIdiom Phone='exp20181029Artboard46',Tablet='Artboard'}"/>
    </ContentPage.BackgroundImage>
    <ContentPage.ToolbarItems>
        <ToolbarItem Name="menuitem1" Order="Secondary" Text="logout" Priority="0" Clicked="MenuItem1_Clicked"/>
        <ToolbarItem Order="Primary"  Priority="1" Clicked="cart_Clicked" Text="cart" x:Name="cart"/>
        <ToolbarItem Order="Primary"  Priority="0" Text="search" x:Name="searchbar" Icon="search.png"/>
    </ContentPage.ToolbarItems>

Главная страница мастера:

<?xml version="1.0" encoding="utf-8" ?>
<MasterDetailPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
                  xmlns:local="clr-namespace:AppXamarin.Pages"
                  x:Class="AppXamarin.Pages.MasterMainPage" NavigationPage.HasNavigationBar="False" NavigationPage.HasBackButton="False"
                  >

    <MasterDetailPage.Master>
        <local:MasterPage x:Name ="masterPage"/>
    </MasterDetailPage.Master>

    <MasterDetailPage.Detail>
        <NavigationPage>
            <x:Arguments>
                <local:MenuPage></local:MenuPage>
            </x:Arguments>
        </NavigationPage>
    </MasterDetailPage.Detail>
</MasterDetailPage>

И главная страница:

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="AppXamarin.Pages.MasterPage"
           NavigationPage.HasNavigationBar="False" NavigationPage.HasBackButton="False" >
    <ContentPage.Title>
        <OnPlatform Android="Menu" iOS="☰"/>
    </ContentPage.Title>
    <ContentPage.Icon>
        <OnPlatform Android="menu.png"/>
    </ContentPage.Icon>
    <ContentPage.Content>
        <StackLayout>
            <Label Text="Welcome to Xamarin.Forms!"
                VerticalOptions="CenterAndExpand" 
                HorizontalOptions="CenterAndExpand" />
        </StackLayout>
    </ContentPage.Content>
</ContentPage>

Результат iOS здесь

Результат Android здесь

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 13 ноября 2018

Возможно, в iOS есть ошибка для дополнительных элементов панели инструментов.Я справляюсь с этим, устанавливая порядок первичного на iOS и вторичного на Android.

<ToolbarItem Name="menuitem1" Text="logout" Priority="0" Clicked="MenuItem1_Clicked">
            <ToolbarItem.Order>
                <OnPlatform Android="Secondary" iOS="Primary"/>
            </ToolbarItem.Order>
0 голосов
/ 13 ноября 2018
switch (Device.RuntimePlatform)
        {
            case Device.iOS:

                NavigationPage.SetHasNavigationBar(this, false);
                break;
        }

Попробуйте это в Code-Behind

...