Меню гамбургера оболочки Xamarin Forms не отображается на iOS при первой навигации

#xamarin.forms

#xamarin.forms

Вопрос:

У меня есть приложение оболочки Xamarin Forms с меню гамбургера. Когда я открываю приложение, я не вижу меню гамбургера на своем iPhone (но на моем Android). Когда я куда-то перемещаюсь и возвращаюсь назад, значок гамбургера появляется, как и ожидалось. Для обработки меню гамбургера я полагаюсь на сгенерированный по умолчанию код шаблона оболочки приложения и просто добавил в меню еще несколько пунктов.

введите описание изображения здесь
введите описание изображения здесь

Как я могу сказать shell, чтобы мои значки меню отображались всегда?

Ссылка на проект на Github:https://github.com/NPadrutt/MoneyFox.Windows / tree / mobile-редизайн

Комментарии:

1. Какая версия XF в вашем проекте? Похоже, проблема в более старой версии.

2. Я на версии 4.8.0.1269

3. Не могли бы вы поделиться образцом, чтобы я мог протестировать его непосредственно на своей стороне?

4. Я пытаюсь создать образец, но пока не могу воспроизвести его в новом проекте. В случае, если это поможет, исходный проект с открытым исходным кодом. Я поместил ссылку в исходное сообщение.

5. Можете ли вы поделиться своим кодом навигации? Плюс ваше создание оболочки и базовая структура оболочки?

Ответ №1:

Это вызвано пользовательским средством визуализации.

в MoneyFox.iOS -> Средство визуализации-> CustomContentPageRenderer .

         ToolbarList.Sort((i1, i2) =>
                         {
                             return i1.Priority > i2.Priority
                                    ? -1 : 1;
                         });

        foreach(ToolbarItem itm in ToolbarList)
        {
            if(itm.Priority < 0)
                LeftNavList.Add(itm.ToUIBarButtonItem());
            else
                RightNavList.Add(itm.ToUIBarButtonItem());
        }

        navigationItem.SetLeftBarButtonItems(LeftNavList.ToArray(), false);
        navigationItem.SetRightBarButtonItems(RightNavList.ToArray(), false);
  

Приведенный выше код приведет к повторной сортировке элемента на панели навигации. Что вызовет проблему. Самое простое решение — не использовать средство визуализации. В данном случае это, похоже, не имеет никакого очевидного эффекта.

 //[assembly: ExportRenderer(typeof(ContentPage), typeof(CustomContentPageRenderer))]