首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Xamarin表格:旋转木马子页面不触发消失事件?

Xamarin表格:旋转木马子页面不触发消失事件?
EN

Stack Overflow用户
提问于 2020-09-08 08:45:58
回答 1查看 284关注 0票数 0

我有一个旋转木马页面,有9个孩子,我已经实现了一个跟踪功能的一些子页面。跟踪功能用于视频、音频和内容。如果用户播放视频、音频或读取内容,然后用户移动到下一个子页面或返回到前一个页面,那么我将跟踪花费的时间。

我在子页面的OnDisappearing()上添加了跟踪服务。因此,当用户离开页面时,跟踪服务开始触发,并且在android平台上运行良好。当我在ios平台上测试它时,OnDisappearing()没有启动。

这是一个众所周知的问题吗?我怎样才能解决这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-08 14:06:14

在我这一边,OnDisappearing在iOS和Android上都运行得很好。如果该问题仍然存在于您的项目中。您可以使用以下解决方法。

在xaml中

代码语言:javascript
运行
复制
<CarouselPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
              xmlns:local="clr-namespace:CarouselPageDemo"
             x:Class="CarouselPageDemo.MyCarouselPage"

              CurrentPageChanged="CarouselPage_CurrentPageChanged">

在CarouselPage.xaml.cs中

代码语言:javascript
运行
复制
 int CurrentIndex = 0;

//...

    private void CarouselPage_CurrentPageChanged(object sender, EventArgs e)
    {
        var index = this.Children.IndexOf(this.CurrentPage);

 

        var ind = CurrentIndex.ToString();

 

        if (index != CurrentIndex)
        {
            MessagingCenter.Send<Object>(this, ind);
        }

 

        if (index > -1)
        {
            CurrentIndex = index;
        }

 

    }

在子页面中

代码语言:javascript
运行
复制
public Page1()
{
  InitializeComponent();

 

  MessagingCenter.Subscribe<Object>(this, "0", (org) =>
  {

 
     //   ... handle the logic when the page will disappearing

  });
}

注意: 在您的子页面中会有所不同(0,1,2,…)

更新

代码语言:javascript
运行
复制
    public partial class MainPage : CarouselPage
    {


        int LastIndex=0;

        public MainPage()
        {
            InitializeComponent();
            this.Children.Add(new Page1());
            this.Children.Add(new Page2());
            this.Children.Add(new Page3());
            CurrentPage = Children[0];

            MessagingCenter.Subscribe<App, string>((App)Xamarin.Forms.Application.Current, "child", (s, child) =>
            {
                CurrentPage = Children[Int32.Parse(child)];
            });
        }

        private void CarouselPage_CurrentPageChanged(object sender, EventArgs e)
        {
            var index = this.Children.IndexOf(this.CurrentPage);
            string title = this.CurrentPage.Title;
            Debug.WriteLine("title:>>" + title);
            if (!string.IsNullOrEmpty(title)&& LastIndex!=index)
            {
                MessagingCenter.Send<MainPage>(this, title);
            }

            if (index > -1)
            {
                LastIndex = index;
            }

        }
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63790331

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档