1

1. Xcode 4+ で IB を使用して、MT で使用する UITableViewCell のカスタム サブクラスを視覚的に作成します。

  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 への呼び出しをどこに置いても、それらはすべて null であるため、コンストラクターが正常に実行されたとしても、null 参照例外が発生します。また、それを OwnerDrawnElement にしようとしましたが、いくつかの問題に遭遇しました。

これは可能ですか?おすすめのパターンはありますか?

4

1 に答える 1

0

あなたが探しているサンプルは OwnerDrawnCell だと思います: https://github.com/migueldeicaza/MonoTouch.Dialog/blob/master/MonoTouch.Dialog/Elements/OwnerDrawnElement.cs

GetCell() メソッドをオーバーライドしてカスタム セルを提供する方法を確認します。

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;
}

OwnerDrawnCell を XIB がロードされたセルに置き換える必要があることを除いて、同じことを行う必要があります。


DequeueReusableCell API の新しい iOS6 バリアントを使用して XIB からセルをロードする方法についてのブログ投稿も行いました。 html

于 2013-01-31T22:35:50.733 に答える