0

簡単に言うと、UIView.AddSubviewを使用してMonotouch.Dialog.ElementをUIViewに追加したいと思います。これを可能にするには、何を変更/作成する必要がありますか?

4

1 に答える 1

1

Aは、ではなく、にMonoTouch.Dialog.Element基づいています。UITableViewCellUIView

このため、Elementはaの一部である必要があり、単純にaUITableViewに追加することはできません。UIViewSubView

UIViewに似たものが必要なElement場合は、から継承したカスタムビューを作成する必要がありますUIView。このビューでは、選択したのView内側から好きな動作を作成できます。UITableViewCellElement

編集:MultiLineElementに基づく基本的な例

public class MyView : UIView
{
  private string Caption { get; set; }          
  private string Text { get; set; }

  public View(string caption, string text) : base()
  {
    Opaque = true;
    BackgroundColor = UIColor.Clear;
    Update(caption, text);
  }

  public void Update(string caption, string text)
  {
    Caption = caption;
    Text = text;

    SetNeedsDisplay();
  }

  public override void Draw(RectangleF frame)
  {
    var bounds = Bounds;
    var captionFont = UIFont.BoldSystemFontOfSize(12f);
    var textFont = UIFont.SystemFontOfSize(10f);
    var width = Bounds.Width;

    if (string.IsNullOrWhiteSpace(Caption) == false)
    {
      // Caption, black
      UIColor.Black.SetColor();
      width = Bounds.Width / 2;
      var captionHeight = 
        StringSize(Caption, captionFont, width, UILineBreakMode.TailTruncation).Height;
      var captionOffset = textFont.PointSize - captionFont.PointSize;
      DrawString(Caption, new RectangleF(0, captionOffset, width, captionHeight),
        captionFont, UILineBreakMode.TailTruncation, UITextAlignment.Right);
    }

    // Text, dark gray
    UIColor.DarkGray.SetColor();
    var textHeight = 
      StringSize(Text, textFont, width, UILineBreakMode.WordWrap).Height;
    DrawString(Text, new RectangleF(Bounds.Width - width, 0, width, textHeight), 
      textFont, UILineBreakMode.WordWrap);
  }
}
于 2013-02-18T20:49:01.657 に答える