我为MonoTouch.Dialog创建了一个自定义EntryElement,以便所有控件都向右对齐。代码如下:
public class RightAlignEntryElement : EntryElement
{
private NSString _cellKey = new NSString("RightAlignedEntryElement");
public RightAlignEntryElement(string caption, string placeholder, string value) : base(caption, placeholder, value)
{
}
protected override UITextField CreateTextField(RectangleF frame)
{
var paddedFrame = frame;
paddedFrame.Width = frame.Width -= 10;
var textField = base.CreateTextField(paddedFrame);
textField.TextAlignment = UITextAlignment.Right;
return textField;
}
public override UITableViewCell GetCell(UITableView tv)
{
var cell = base.GetCell(tv);
return cell;
}
protected override NSString CellKey
{
get { return _cellKey; }
}
}
这样可以正常工作,直到Dialog被刷新,例如滚动表,或者呈现子视图然后被解除。
在单元格右侧有填充之前,滚动一旦填充消失。我已经看到这是过去的一个问题,并且已经在这里和Xamarin论坛上看到了各种其他建议,但似乎没有什么对我有用。
请参阅附加屏幕之前和之后的抓取。
答案 0 :(得分:0)
为了记录,以下是我在另一个论坛上对此问题的回复:
行为是由于您没有在RightAlignEntryElement中使用单元格重用
您的GetCell方法应如下所示:
public override UITableViewCell GetCell(UITableView tv)
{
var cell = tv.DequeueReusableCell (CellKey) as UITableViewCell;
if (cell == null) {
cell = base.GetCell(tv);
cell.TextLabel.Font = UIFont.FromName("HelveticaNeue-Light", 16);
}
return cell;
}