iOS以编程方式添加UITableView部分并重新加载

时间:2016-02-18 12:24:01

标签: ios swift uitableview intersection

我想将Section添加到UITableView和Rows到这个新部分 但当我这样做时,应用程序就崩溃了。

如何在不使用UITableView的情况下将数据添加到UITableView.ReloadData()并重新加载数据。

以下是我使用它的方法。

 private void AddToSection(UITableView tableView, List<TableItems> messages, bool reload = false)
  {

     foreach (var item in messages)
     {

        if (!_section.Contains(item.Section))
        {
           _sectionMessage.Add(new List<string>());
           _section.Add(item.Section);
           if (reload)
           {                  
              var index = NSIndexSet.FromIndex(_section.Count - 1);
              tableView.InsertSections(index, UITableViewRowAnimation.None);                  
           }

        }
        int section = _section.Count - 1;
        _sectionMessage[section].Add(item.Message);

        if (reload)
        {
           int row = _sectionMessage.LastOrDefault().Count-1;
           var index = new NSIndexPath[] {NSIndexPath.FromRowSection(row, section) };
           tableView.InsertRows(index, UITableViewRowAnimation.None);             
        }

     }
  }

1 个答案:

答案 0 :(得分:0)

首先编辑: 您还必须更新您的dataSource。您不能只在不更新dataSource的情况下向tablView添加新的部分和单元格。

/// 你试过以下吗?

tableView.beginUpdates()
tableView.endUpdates()

通常当你执行reloadData()并且没有正确更新dataSource时,你会遇到像你这样的问题。