Monotouch:重用UITableViewCell的正确方法
|
我正在寻找在UITableView中重用单元格的正确方法,我会知道我使用的机制是否正确。
情况如下。
我有一个UITableView,它显示从Web服务获取的数据列表。
_listOfItems = e.Result as List<Item>;
_listOfItems是实例变量。
此列表传递给扩展UITableViewSource的类。显然,此类重写GetCell方法以这种方式可视化数据:
public override UITableViewCell GetCell (UITableView tableView, MonoTouch.Foundation.NSIndexPath indexPath)
{
UITableViewCell cell = tableView.DequeueReusableCell(_cID);
Item item = _listOfItems[indexPath.Row];
int id = item.Id;
if (cell == null)
{
cell = new UITableViewCell(UITableViewCellStyle.Value1, _cID);
cell.Tag = id;
_cellControllers.Add(id, cell);
}
else
{
bool vb = _cellControllers.TryGetValue(id, out cell);
if(vb)
{
cell = _cellControllers[id];
}
else
{
cell = new UITableViewCell(UITableViewCellStyle.Value1, _cID);
cell.Tag = id;
_cellControllers.Add(id, cell);
}
}
cell.TextLabel.Text = item.Title;
return cell;
}
哪里
_cID是单元的实例变量标识符
string _cID = \"MyCellId\";
_cellControllers是用于存储Item实例的单元格和相对ID的字典
Dictionary<int, UITableViewCell> _cellControllers;
我正在使用字典来存储单元格,这是因为当行被点击时,我必须检索被点击的单元格的ID(通过cell.Tag值),执行一些其他操作-即从服务中获取其他一些数据-并然后使用新值再次更新该单元格。在这种情况下,每个单元必须是唯一的。
所以,我的问题是:
这是重用单元格的正确方法,还是可以找到另一种方法来重用单元格并确保单元格的每个抽头是唯一的?
我希望一切都清楚:)预先谢谢。问候。
没有找到相关结果
已邀请:
2 个回复
铰齐插
然后,在RowSelected方法中,更改数据源:
如果我正确理解您要做什么,则此解决方案会更好。
程琶
上面的代码使用Linq创建了一个包含4行的UITableView,其中一个行用于\“ foo \”,\“ bar \”和\“ baz \”,并在末尾添加了一个额外的节点,以展示如何使用Add API。 您还可以使用多种分类的元素,您不仅限于String元素。