功能适用于 Android 但不适用于 iOS CollectionView

问题描述 投票:0回答:0

我对这个问题很困惑。基本上在 iOS 上,我的 CollectionView 将无法工作——它会抛出以下错误:

Invalid update: invalid number of sections. The number of sections contained in the collection view after the update (2) must be equal to the number of sections contained in the collection view before the update (2), plus or minus the number of sections inserted or deleted (1 inserted, 0 deleted)**strong text**

我已经尝试了一些来自 StackOverflow 的现有修复程序,但都出现了同样的错误,但似乎都不合适。这是对 ObservableCollection 进行更改的代码:

async Task DisplayMessage(object sender, CustomEventArgs e)
        {

            Message message = e.MessageSnapshot;

            Console.WriteLine("Doyy: " + e.MessageSnapshot.Content);

            if (message.TimeStamp.Date != lastMessageTime.Date)
            {
                lastMessageGroup = new MessageGroup
                {
                    Name = message.TimeStamp.ToString("dd MMM")
                };
            }
            else
            {
                MessagesList.Remove(lastMessageGroup);
            }

            lastMessageTime = message.TimeStamp;
            Console.WriteLine("Arrived here at least once!");
            lastMessageGroup.Add(message);
            MessagesList.Add(lastMessageGroup);
            Console.WriteLine("Completed at least once!");

        }

此片段是消息系统的一部分,因此由数据库更改引起的事件触发运行。一旦显示了其余项目(一次显示一个项目),它就会工作,但最初在页面加载时,当事件多次触发以使用现有对话填充视图时,视图冻结并且您收到此错误。有时它会完全崩溃,有时它会抛出错误并使视图为空。

到目前为止我已经尝试过:

  • lock()
    .Remove()
    行周围添加
    .Add()
    语句,以确保每个事件火灾中的这些行不会同时运行
  • await Task.Delay(1000);
    行之后和函数底部添加
    .Remove()

任何帮助将不胜感激!

c# xamarin.forms xamarin.ios uicollectionview observablecollection
© www.soinside.com 2019 - 2024. All rights reserved.