【问题标题】:Tabbed Page OnAppearing()选项卡式页面 OnAppearing()
【发布时间】:2016-11-28 20:14:29
【问题描述】:

我有一个要尝试自定义的选项卡式页面 Xamarin 表单应用程序。我正在从仅 IO 的应用程序迁移到所有平台。在 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()。我需要知道每个子页面的加载时间。

我已阅读有关消息中心的信息,但我不确定在这种特殊情况下如何实现它。消息中心会是最好的解决方案吗?

如何实施一个解决方案,让我知道显示四个页面中的哪一个?

【问题讨论】:

  • 我也遇到了同样的问题,你解决了吗?
  • 您好,这是一个已知错误,已在最新的预发布版本中修复
  • 所以你的问题是 OnAppearing 方法被多次调用对吧?
  • 自 XF 3.0.0.446417 起未修复......这太糟糕了!
  • XF 4.0 最新稳定版本中未修复

标签: xamarin.forms tabbedpage


【解决方案1】:

可能的解决方法是在您的 TabbedPage 中覆盖 OnCurrentPageChanged

protected override void OnCurrentPageChanged()
{
    base.OnCurrentPageChanged();

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多