选项卡页面的OnAppearing()方法

5

我是一个Tabbed Page Xamarin Form应用程序的助手,我正在尝试自定义它。我正在从仅限iOS的应用程序迁移到所有平台。在iOS中,有一些函数我使用了ViewDidDisappear()、 ViewDidAppear() 和 ViewDidLoad();

今天的应用程序加载选项卡页面如下:

{
    Children.Add(new MyPage1());
    Children.Add(new MyPage2());
    Children.Add(new MyPage3());
    Children.Add(new MyPage4());
}

每个子页面都是这样声明的,都继承自ContentPage。

class MyPage1: ContentPage
{
        …
        protected override void OnAppearing()
        {
            base.OnAppearing();
            Content = SomeContentPage;
        }
}

我遇到的问题是,当只有MyPage1被显示时,OnAppearing()会为所有页面调用。我需要知道每个子页面何时加载。
我已经了解了消息中心,但不确定如何在这种情况下实现它。消息中心是否是最佳解决方案?
我要如何实现一种解决方案,以便知道哪个页面中的四个页面正在显示?

1
我遇到了同样的问题,你解决了吗? - Ingenator
嗨,这是一个已知的错误,在最新的预发布版本中已经修复。 - Thomas
所以你的问题是 OnAppearing 方法被调用超过一次了,对吧? - chaosifier
截至XF 3.0.0.446417,问题尚未解决... 真糟糕! - Shockwaver
2022年了,XF5仍然没有修复。LMAO。 - Krumelur
显示剩余2条评论
2个回答

3
可能的解决方法是在您的选项卡页面中覆盖 OnCurrentPageChanged 方法。
protected override void OnCurrentPageChanged()
{
    base.OnCurrentPageChanged();

    if ( CurrentPage is YourContentPage page)
    {
        page.YourCustomCode();
    }
}

-1
在主TabbedPage上,添加子页面后,将CurrentPage属性设置为null应该可以解决问题。

@Shockwaver,实际上它确实解决了问题。不知道为什么在你的情况下不起作用。 https://forums.xamarin.com/discussion/comment/318378#Comment_318378 - chaosifier
这解决了第一页的 OnAppearing 会触发两次的先前错误。但并不能修复应用程序启动时所有页面的 OnAppearing 都会触发的问题。 - Bondolin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接