在Xamarin中添加自定义单元格

时间:2018-08-19 01:10:02

标签: c# xamarin xamarin.android xamarin.ios

我有一个UITableView,其中包含一个原型单元,在情节提要中向其添加了组件,并在我的CustomCell.h和.m文件中对其进行了引用,CustomCell.cs如下所示:

public partial class CustomCell : UITableViewCell
{
    public CustomCell(IntPtr handle) : base(handle)
    {

    }

    public UILabel Sender
    {
        get
        {
            return senderLabel;
        }
        set
        {
            senderLabel = value;
        }
    }

    public UILabel Subject
    {
        get
        {
            return subjectLabel;
        }
        set
        {
            subjectLabel = value;
        }
    }

    public UILabel Date
    {
        get
        {
            return timeLabel;
        }
        set
        {
            timeLabel = value;
        }
    }

    public UILabel Preview
    {
        get
        {
            return previewLabel;
        }
        set
        {
            previewLabel = value;
        }
    }

    public UILabel Initials
    {
        get
        {
            return initialsLabel;
        }
        set
        {
            initialsLabel = value;
        }
    }
}

然后将此自定义单元格用于表的源文件及其GetCell方法中,以尝试向表中添加数据:

CustomCell cell = tableView.DequeueReusableCell("MailCell") as CustomCell;
cell.Sender.Text = TableItems[indexPath.Row].Sender;
cell.Subject.Text = TableItems[indexPath.Row].Subject;
cell.Preview.Text = TableItems[indexPath.Row].Preview;
cell.Date.Text = TableItems[indexPath.Row].Time;
cell.Initials.Text = "";

当您运行程序并尝试将数据添加到表中时,它在GetCell方法的第二行以NullReferenceException中断,这意味着它们要么在单元格中没有标签,要么在单元格中没有编辑。我的原型单元格的标识符为“ MailCell”,并且我尝试在该类中创建完整的构造函数,但这种方法无法正常工作。我以前曾以编程方式将组件添加到表的单元格中,并且效果很好,因此我可以确定将数据添加到源中的代码可以按预期工作,而不是问题。还有什么可以测试的?

1 个答案:

答案 0 :(得分:0)

之所以中断,是因为它找不到第一行的自定义单元格实例。 如果找不到一个DequeueReusableCell实例,它将返回null

将代码更改为:

for key, value in form.cleaned_data.items():