2016-09-06 86 views
0

我试图创建测验答案,但由于Xamarin的iOS如何创建不可重复使用的UITableViewCells

var cell = (CreateMessageNewAnswerCell)TableView.DequeueReusableCell(CreateMessageNewanswerCell.Key); 

我收到从以前的时代相同的箱尺寸。 我知道Dequeue方法重用单元格,因此大小保持原来的大小,我试图重置大小,但它将自身置于无法解决的问题,因为单元格会更改其大小(由于重用)的位置。

因此,我的问题是,如何创建单元而不重复使用它们。 我曾尝试下面的代码,但没有奏效

var cell = new CreateMessageNewAnswerCell(UITableViewCellStyle.Default, CreateMessageNewAnswerCell.Key); 

cell.SelectionStyle = UITableViewCellSelectionStyle.None; 
cell.SetModel(createMessageSession.AddAnswersModel, indexPath.Row - 1); 
+0

那么,尺寸有什么问题?为什么不能在-heightForRowAtIndexPath委托方法的索引路径中为特定行指定大小? –

+0

问题基本上是我在这种情况下不能使用自动布局的事实,因此我需要重新创建单元格,而不是重新使用现有的单元格。 – iDesireJustice

+0

你有什么问题,heightForRowAtIndexPath,以及tableView中的单元格可重用性与自动布局无关。 –

回答

2

如果你在你的UITableView的话,我不recommned不使用电池重用显示类似的细胞,因为它会产生负面影响您的滚动性能和增加内存压力。

要在一个UITableView中处理不同大小的单元格,可以使用AutoLayout并将单元格高度设置为Automatic Dimensions。

TableView.EstimatedRowHeight = 200; 
TableView.RowHeight = UITableView.AutomaticDimension; 

这将确保您的单元格高度动态匹配其内容。欲了解更多信息,请点击这里post

如果您仍然不想使用单元重用,那么不要使用DequeueReusableCell,而只需在GetCell方法中返回一个新的单元实例。

+0

您的回答并不真正有帮助,因为您不能将自动布局用于可打字的单元格,因此您需要自行处理它们。 无论如何,我已经在处理单元类中的大小,我只需要知道如何返回一个可以工作的新单元,因为我尝试的代码显然不起作用 – iDesireJustice

+0

您的单元是否在Nib文件中定义? – wishmaster

+0

是的,我的手机是一个笔尖(xib) – iDesireJustice

相关问题