gpt4 book ai didi

ios - 滚动时 MvxTableViewSource DequeueReusableCell 问题

转载 作者:行者123 更新时间:2023-12-01 18:18:05 25 4
gpt4 key购买 nike

我们已经设置了我们的 tableviewSource 和一个 tableview,但是在滚动大量单元格时,数据出现在错误的单元格中并且选择状态被应用于多个单元格时遇到了问题。

表格单元格根据 n+1 设置关于表格单元格/表格 View 的教程,仅当表格的一部分因大小而隐藏时才会引起问题。

关于如何解决这个问题的任何想法?

var menuItem = item as MenuItemViewModel;

if (menuItem != null && menuItem.ViewModelType == null)
{
NSString cellId = new NSString("Menu Header Cell");
var headerCell = tableView.DequeueReusableCell(cellId, indexPath) as MenuItemHeaderCell;

if (headerCell == null)
{
headerCell = new UITableViewCell(UITableViewCellStyle.Default, cellId) as MenuItemHeaderCell;
}
return headerCell;
}
else
{
NSString cellId = new NSString("Menu Cell");
var cell = tableView.DequeueReusableCell(cellId, indexPath) as MenuItemCell;
if (cell == null)
{
cell = new UITableViewCell(UITableViewCellStyle.Default, cellId) as MenuItemCell;
}
return cell;
}

根据您的评论,我已将代码更新如下:

private static readonly NSString MenuHeaderCellIdentifier = new NSString("Menu Header Cell");
私有(private)静态只读 NSString MenuItemCellIdentifier = new NSString("Menu Cell");
        public MenuTableViewSource(UITableView tableView): base(tableView)
{
tableView.RegisterClassForCellReuse(typeof(MenuItemHeaderCell), MenuHeaderCellIdentifier);
tableView.RegisterClassForCellReuse(typeof(MenuItemCell), MenuItemCellIdentifier);
}


protected override UITableViewCell GetOrCreateCellFor(UITableView tableView, NSIndexPath indexPath, object item)
{
NSString cellIdentifier;

var menuItem = item as MenuItemViewModel;
if (menuItem.ViewModelType == null)
{
cellIdentifier = MenuHeaderCellIdentifier;
}
else
{
cellIdentifier = MenuItemCellIdentifier;

}
var cell = (UITableViewCell)TableView.DequeueReusableCell(cellIdentifier, indexPath);
return cell;

}

绑定(bind)设置如下:
var source = new MenuTableViewSource(TableView);
TableView.Source = source;
TableView.RowHeight = 46;

var set = this.CreateBindingSet<LeftMenuView, LeftMenuViewModel>();
set.Bind(source).To(vm => vm.MenuItems);
set.Apply();

TableView.ReloadData();

重复使用问题仍在发生。基本上,如果单元格不在屏幕上,它们在滚动时开始获取不正确的值。还有什么我们应该做的吗?

最佳答案

感谢 Stuart 提供的示例代码。经过几个小时的调查后,我发现它只是在几个小时后才发生在 iOS7 上,我意识到这是因为我们添加了一个本地创建的变量,然后延迟绑定(bind)到它,这似乎导致值消失的范围。将其更改为成员变量阻止了这种情况的发生,这是多么漫长的一天,增加了陷阱的银行。

关于ios - 滚动时 MvxTableViewSource DequeueReusableCell 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19688493/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com