UITableView没有刷新

时间:2013-09-26 00:49:02

标签: ios uitableview xamarin.ios

我正在创建一个列表并在UITableView中显示它。在查看我想要删除项目然后保存更新列表时,允许我使用刷新按钮刷新旧列表。我使用按钮保存当前列表,然后使用刷新按钮将数据重新加载到视图中。问题是保存按钮中的代码总是运行,即使我没有按下按钮。我可以这样解释:

btnSave.TouchUpInside += delegate { _ListCopy = new List<Tasks>();
}; 

btnReset.TouchUpInside += delegate {
tblTotal.ReloadData();
tblTotal.DataSource = new ListDataSource(_ListCopy,txtTotalCost);
};

tblTotal.DataSource = new ListDataSource (_ListOfTasks,txtTotalCost);

当我运行此表时,表格视图会显示_ListOfTasks列表,当我按btnReset时,_ListCopy会重新加载为数据源。我遇到的问题是即使我没有按_ListCopy,也会分配btnSave的值。在这种情况下,视图被清除。如果我注释掉行_listCopy = new List<Tasks>();,我会在表格视图数据源中收到空引用异常:

public override int RowsInSection (UITableView tableView, int section)
{ return _ListOfTasks.Count; }  <-- exception

向我表明_ListCopy的值为空。我以为我可以_ListCopy = _ListOfTasks取代new List。但是,由于某种原因,代码无论如何都在保存按钮中运行,因此我无法在需要时保存正确的列表值。为什么_ListCopy在没有说明的情况下被赋值?我也没有在其他任何地方为它赋值。有人可以解释发生了什么吗?我可以使用不同的解决方案吗?

1 个答案:

答案 0 :(得分:0)

我发现我的插座设置错误了。出于某种原因,我有两个网点连接到btnreset而没有连接btnsave。因此,当我按下重置时,我也开始关注btnsave的代码。我通过纠正我的网点解决了整个问题。至于制作原始列表的副本:我试图简单地为保存功能设置_ListCopy = _ListOfTasks。这仅指向_ListOfTasks的内存位置,其中包含任何更改。我通过编写foreach循环将一个列表复制到另一个

来更正此问题
foreach( var task in _ListOfTasks) 
{
    _ListCopy.Add(task);
}

现在我可以按保存并存储第一个估算值。我可以做任何删除,如果客户想要重新审视初始估算,我可以刷新数据。