我尝试自定义UITableViewCell
。我这样解释过:Xamarin Customizing a ViewCell
到目前为止一切顺利。 现在我尝试在xib中实现单元格的ui。现在几乎可以工作了。我只有两个问题:
这是我的代码:
ViewCellRenderer:
public override UITableViewCell GetCell(Cell item, UITableViewCell reusableCell, UITableView tv)
{
var NativeViewCell = (NativeViewCell)item;
cell = reusableCell as NativeiOSCell;
if (cell == null)
cell = new NativeiOSCell(item.GetType().FullName, NativeViewCell);
else
cell.NativeViewCell.PropertyChanged -= OnNativeViewCellPropertyChanged;
NativeViewCell.PropertyChanged += OnNativeViewCellPropertyChanged;
cell.UpdateCell(NativeViewCell);
tv.RowHeight = 102;
return cell;
}
NativeiOSCell:
public NativeiOSCell(string cellId, NativeViewCell cell) : base(UITableViewCellStyle.Default, cellId)
{
NativeViewCell = cell;
UITableViewCell view = (UITableViewCell) UINib.FromName("Layout1", NSBundle.MainBundle).Instantiate(null, null)[0];
this.Bounds = view.Bounds;
ContentView.AddSubviews(view.ContentView.Subviews);
}
答案 0 :(得分:3)
由于M.D.刚刚创建了ViewCellRenderer
而不是ListViewRenderer
,我们无法访问GetHeightForRow
或EstimatedHeight
方法。
<ListView x:Name="listView" RowHeight="100">
<ListView x:Name="listView" HasUnevenRows="True">
<ListView.ItemTemplate>
<DataTemplate>
<local:NativeCell Height="100" Name="{Binding Name}" Category="{Binding Category}" ImageFilename="{Binding ImageFilename}" />
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
答案 1 :(得分:0)
检查表的表源,因为问题与您的自定义单元格无关,问题是表源中为默认值分配此值的方法
public override nfloat EstimatedHeight(UITableView tableView, NSIndexPath indexPath)
{
return base.EstimatedHeight(tableView, indexPath);
}
尝试添加类似
的内容public override nfloat EstimatedHeight(UITableView tableView, NSIndexPath indexPath)
{
return 104;
}
并检查表视图的此值不是自动的,并将自定义单元格的值