我正在创建一个列表并将其显示在 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
被赋值而不告诉它?我也没有在其他任何地方给它赋值。有人可以解释发生了什么吗?我可以使用其他解决方案吗?