如何解决iOS“更多”选项卡记住上一个打开页面的问题xamarin
我有一个问题,在iOS的“更多”标签上,行为异常。 使用TabBar和TabbedPages。
启动应用程序时,我看到4个选项卡(1-4)和“更多”选项卡(哪个由xamarin.forms自动创建)。 我打开“更多”标签以查看不适合的其他标签的列表。我将看到列表“ TabPage5”和“ TabPage6”。 (下面的图)
我选择例如TabPage5。之后,我将访问主栏上的选项卡之一(tabPage1-4)。 当我再次尝试打开“更多”选项卡以查看TabPage5和TabPage6的列表时->我已经在TabPage5的详细信息上了(最后一次从“更多”选项卡中打开)。
似乎它可以记住我上次访问的页面,或者我没有从“更多”选项卡中正确离开该页面。
标签栏:
- TabPage1
- TabPage2
- TabPage3
- TabPage4
- 更多
- TabPage5
- TabPage6
https://docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/navigation/tabbed-page
有人可以给我一些建议吗?我总是希望当我单击选项卡“更多”以查看默认情况下不可见的选项卡列表。 谢谢
解决方法
创建TabbedPage
的自定义渲染器,并在“更多”标签中选择标签时调用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);
}
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。