C# iOS";“更多”;选项卡记住上一期打开的页面(xamarin)
我有一个问题,在iOS“更多”选项卡上的行为异常。 使用TabBar和TabbedPages 当我启动应用程序时,我看到4个选项卡(1-4)和“更多”选项卡(由xamarin.forms自动创建)。 我打开“更多”选项卡以查看不适合的rest选项卡列表。我将看到我的列表“TabPage5”和“TabPage6”。(下图) 例如,我选择TabPage5。之后,我将访问主栏上的一个选项卡(tabPage1-4)。 当我再次尝试打开“更多”选项卡以查看TabPage5和TabPage6的列表->我已经了解了TabPage5的详细信息(上次从更多选项卡打开时) 它似乎还记得我上次访问的页面,或者我没有正确地从“更多”选项卡中离开该页面 选项卡栏: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的列表->我已经
- 表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);
}
}
}
}