0

我正在尝试使用 MonoTouch 开发应用程序。对于某些屏幕,我在代码中创建 UI。我有一个动态创建RadioGroup的,通常是两到四个RadioElement(选择)。有时文本(也是动态的)太长了,RadioElement以至于在 iPhone 上文本最后被缩短为 ...。

我用谷歌搜索并没有发现关于如何创建 multilineRadioElement的建议。我知道如果您想要多行文本,您可以创建一个MultilineElement,但我将如何将两者结合起来?我假设我必须继承RadioElement并覆盖一些事件,但是哪个?是MonoTouch.UIKit.UITableViewCell GetCell (MonoTouch.UIKit.UITableView tv)事件吗?

MultilineElement或者,当它被按下/选择时,你将如何创建一个得到复选标记的?

或者我应该有完全不同的想法?是否有其他一些组件可以以更简单的方式解决这个问题?

4

1 回答 1

0

这是一种解决方案(至少它解决了我的问题):

public class MultilineRadioElement : RadioElement
{
    public MultilineRadioElement (string caption, string group) 
      : base(caption, group) { }

    public override MonoTouch.UIKit.UITableViewCell GetCell 
      (MonoTouch.UIKit.UITableView tv)
    {
        var cell = base.GetCell (tv);
        cell.TextLabel.Lines = 2;
        return cell;
    }
}

当我现在使用 aMultilineRadioElement而不是 aRadioElement时,文本显示在两行上。对我来说,两行就足够了。如果文本更长,并且您仍希望以RadioElement当前大小将其放入其中,则可能必须计算文本的大小,例如将字体设置cell.TextLabel.Font为更合适的字体。

我不知道如何让RadioElement自己变大,所以这是我最好的建议。

顺便说一句,您可能还应该添加

protected override MonoTouch.Foundation.NSString CellKey 
{
    get { return base.CellKey; }
}

正如我的 Xamarin Studio中MultilineRadioElement的智能感知所建议的那样,这应该在覆盖时完成GetCell,尽管它似乎在没有它的情况下也可以工作。

如果有人有更好的建议,我很高兴!!(是的,两个感叹号:))

于 2013-09-29T11:19:37.847 回答