我正在创建一个列表并将其显示在UITableView中。查看时我想删除一个项目,然后保存更新的列表,让我用刷新按钮刷新旧列表。我使用一个按钮来保存当前列表,然后使用刷新按钮将数据重新加载到视图中。问题是保存按钮中的代码始终运行,即使我没有按下按钮。我可以解释最好是这样的: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
被重载的数据源。我遇到的问题是,即使我不按btnSave
,也会分配_ListCopy
的值。在这种情况下,视图被清除。如果我注释掉_listCopy = new List<Tasks>();
我收到一个空引用异常在这里表视图数据源行:指示我的_ListCopy
值为空
public override int RowsInSection (UITableView tableView, int section)
{ return _ListOfTasks.Count; } <-- exception
。我想我可以用_ListCopy = _ListOfTasks
代替new List
。但是,由于某些原因,代码无论如何都在保存按钮中运行,所以我无法在需要时保存正确的列表值。为什么_ListCopy
被分配一个值而不告诉它?我也没有在其他地方给它赋值。有人可以解释发生了什么吗?我可以使用不同的解决方案吗?
很难说出刚才所显示的情况。跳出来的第一件事是在更新数据源之前调用ReloadData() - 我期望它是另一种方式。其次,TableViews内置了删除项目的能力 - 为什么你不使用它?如果您发布更多代码,我们可能会提供更多帮助。 – Jason
从表中删除正在工作。这是一个估算应用。为绘画业务。每个任务都会被计算并保存在一个列表中,然后可以在表格中查看。有时候,如果任务被删除,客户会想知道成本。我想存储原始估计值,然后做任何更改,但有能力恢复原始列表。我首先尝试简单地复制原始列表,当我按下重置按钮时,副本将被发送到表格数据源,但我无法轻松地使其工作。 – blue