1

我试图弄清楚如何: 1. 在 Xcode 4+ 中使用 IB 以可视方式创建 UITableViewCell 的自定义子类以在 MT 中使用。

  1. 如何将该自定义类用作 MT.Dialog 中的元素。

我进行了广泛搜索,但没有找到任何示例或能够解决它。这是我一直在尝试的过程:

  1. 第 1 步似乎很容易,因为我找到了一个很好的教程:http ://www.arcticmill.com/2012/05/uitableview-with-custom-uitableviewcell.html

  2. 第 2 步似乎是我卡住的地方。一旦我有了新课程,在这种情况下会在上面放一些标签:

    public partial class CustomListCell : UITableViewCell {
      public CustomListCell () :base(UITableViewCellStyle.Default,"CellID") { 
      }
    
      public void UpDateData(string lbl1, string lbl2, string lbl3) {
        this.lblLabel1.Text = lbl1;
        this.lblLabel2.Text = lbl2;
        this.lblLabel3.Text = lbl3;
      }
    }
    

我不知道如何把它变成我可以在 MT.Dialog 中使用的东西。我努力了 :

public partial class CustomListCell :Element

但是标签控件似乎并不是每个都被创建。无论我在哪里调用 UpdateData,它们都是空的,因此是空引用异常,即使构造函数执行得很好。我也尝试将其设为 OwnerDrawnElement,但遇到了一些问题。

这可能吗?有推荐的模式吗?

4

1 回答 1

0

I think the sample you are looking for is the OwnerDrawnCell: https://github.com/migueldeicaza/MonoTouch.Dialog/blob/master/MonoTouch.Dialog/Elements/OwnerDrawnElement.cs

See how it overrides the GetCell() method to provide a custom cell:

public override UITableViewCell GetCell (UITableView tv)
{
  OwnerDrawnCell cell = tv.DequeueReusableCell(this.CellReuseIdentifier) as OwnerDrawnCell;

  if (cell == null)
  {
    cell = new OwnerDrawnCell(this, this.Style, this.CellReuseIdentifier);
  }
  else
  {
    cell.Element = this;
  }

  cell.Update();
  return cell;
}

You just need to do the same thing - except you need to replace OwnerDrawnCell with the XIB-loaded cell.


I've also done a blog post on how I load cells from XIBs using the new iOS6 variant of the DequeueReusableCell API - see http://slodge.blogspot.co.uk/2013/01/uitableviewcell-using-xib-editor.html

于 2013-01-31T22:35:50.733 回答