1

我正在使用TabbedPage标签进行导航。我所有的Page类都只有一个空的默认构造函数,我在OnAppearing方法中加载了我的数据。我有 5 个标签。当我点击第二个标签时,OnAppearing第 3、4、5 页的方法也被调用。

如何确保仅在单击选项卡时才加载数据?

4

1 回答 1

3

解决方案:

您可以在方法中获取 currentPage 的索引,OnCurrentPageChanged如果索引等于 1(第二页),则使用messagecenter向页面发送消息。参考以下代码。

在标签页中

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

   int index = Children.IndexOf(CurrentPage);

   if (index == 1)
   {
      MessagingCenter.Send<Object>(this, "click_second_tab");
   }

   else if (index == 2)
   {
      MessagingCenter.Send<Object>(this, "click_third_tab");
   }


} 

在第二页中。将加载数据的代码从 onAppearing 移动到构造函数

public MyPage1()
{

  //...
  MessagingCenter.Subscribe<Object>(this, "click_second_tab", (obj) =>
  {
     //load your data here

      Console.WriteLine("11111");
  });

} 
于 2019-01-01T07:56:08.307 回答