iOS "More" Tab 记住上次打开的页面问题 (xamarin)

iOS "More" Tab remember last open page issue (xamarin)

我有一个问题,在 iOS“更多”选项卡上表现异常。 使用 TabBar 和 TabbedPages。

当我启动应用程序时,我看到 4 个选项卡 (1-4) 和“更多”选项卡(由 xamarin.forms 自动创建)。 我打开“更多”选项卡以查看不适合的其余选项卡列表。我将看到我的列表“TabPage5”和“TabPage6”。 (下图)

我选择例如TabPage5。之后,我将访问主栏上的其中一个选项卡 (tabPage1-4)。 当我尝试再次打开“更多”选项卡以查看 TabPage5 和 TabPage6 的列表时 -> 我已经了解了 TabPage5 的详细信息(上次从“更多”选项卡打开)。

它似乎记得我上次访问过哪个页面,或者我没有正确离开“更多”选项卡中的那个页面。

标签栏:

https://docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/navigation/tabbed-page

任何人都可以给我一些建议。当我单击“更多”选项卡时,我总是希望看到默认不可见的选项卡列表。 谢谢

创建 TabbedPage 的自定义渲染器并在您 select “更多”选项卡中的选项卡时调用 PopToRootViewController

[assembly: ExportRenderer(typeof(TabbedPage), typeof(MainPageRenderer))]
namespace TabbedPageWithNavigationPage.iOS
{
    public class MainPageRenderer : TabbedRenderer
    {
        MainPage _page;

        protected override void OnElementChanged(VisualElementChangedEventArgs e)
        {
            base.OnElementChanged(e);

            if (e.NewElement != null)
                _page = e.NewElement as MainPage;
            else
                _page = e.OldElement as MainPage;

            try
            {
                if (ViewController is UITabBarController tabBarController)
                    tabBarController.ViewControllerSelected += OnTabbarControllerItemSelected;
            }
            catch (Exception exception)
            {
                Debug.WriteLine(exception);
            }
        }


        void OnTabbarControllerItemSelected(object sender, UITabBarSelectionEventArgs eventArgs)
        {
            Debug.WriteLine("Tab Tapped");

            var tabbarVC = ViewController as UITabBarController;

            var tabIndex = tabbarVC.SelectedIndex;

            if (tabIndex == null || tabIndex > 3)
            {
                tabbarVC.MoreNavigationController.PopToRootViewController(false);
            }  
        }
    }
}