Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# iOS";“更多”;选项卡记住上一期打开的页面(xamarin)_C#_Xamarin_Xamarin.ios_Uinavigationbar_Tabbedpage - Fatal编程技术网

C# iOS";“更多”;选项卡记住上一期打开的页面(xamarin)

C# iOS";“更多”;选项卡记住上一期打开的页面(xamarin),c#,xamarin,xamarin.ios,uinavigationbar,tabbedpage,C#,Xamarin,Xamarin.ios,Uinavigationbar,Tabbedpage,我有一个问题,在iOS“更多”选项卡上的行为异常。 使用TabBar和TabbedPages 当我启动应用程序时,我看到4个选项卡(1-4)和“更多”选项卡(由xamarin.forms自动创建)。 我打开“更多”选项卡以查看不适合的rest选项卡列表。我将看到我的列表“TabPage5”和“TabPage6”。(下图) 例如,我选择TabPage5。之后,我将访问主栏上的一个选项卡(tabPage1-4)。 当我再次尝试打开“更多”选项卡以查看TabPage5和TabPage6的列表->我已经

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

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

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

它似乎还记得我上次访问的页面,或者我没有正确地从“更多”选项卡中离开该页面

选项卡栏:

  • 表1
  • 表2
  • 表第3页
  • 表4
  • 更多
    • 表5
    • 表6

有人能给我一些建议吗。我希望每次单击选项卡“更多”时都能看到默认不可见的选项卡列表。
谢谢

在“更多”选项卡中选择选项卡时,创建
选项卡页面的自定义呈现程序
并调用
PopToRootViewController


这是默认行为,我认为这是故意的。如果您在TabPage1中打开详细信息页面,然后转到TabPage2并返回到TabPage1,您将看到详细信息页面,而不是TabPage1的第一页。是的,我知道。但有没有办法“覆盖”这种行为?
[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);
            }  
        }
    }
}