2013-09-29 33 views
0

我想用MonoTouch開發一個應用程序。對於某些屏幕,我使用代碼創建UI。我有一個動態創建的RadioGroup通常有兩到四個RadioElement(選擇)。有時候,文字(動態也是)對於RadioElement來說太長了,所以在iPhone上文本被...截短。MonoTouch.Dialog:如何製作RadioElement多行文字?

我搜索了一下,發現沒有建議如何創建多行RadioElement s。我知道你可以創建一個MultilineElement,如果你想要多行文字,但我怎麼會結合這兩個?我假設我必須繼承RadioElement並覆蓋一些事件,但是哪些?是MonoTouch.UIKit.UITableViewCell GetCell (MonoTouch.UIKit.UITableView tv)事件嗎?

另外,你會如何去創建一個MultilineElement,當它被按下/選擇時,它會打上一個複選標記?

或者我應該思考完全不同?還有其他一些組件能夠以更簡單的方式解決這個問題嗎?

回答

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

當我現在用一個MultilineRadioElement代替RadioElement文本顯示兩行。對我而言,兩條線就夠了。如果文本更長,並且仍然希望以當前尺寸將其放在RadioElement內,則可能需要計算文本的大小,例如將cell.TextLabel.Font中的字體設置爲更合適的字體。

我不知道如何讓RadioElement本身變大,所以這是我最好的建議。

順便說一句,你應該還添加

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

MultilineRadioElement在我Xamarin Studio中的智能感知表明,這應該重寫GetCell時進行,雖然它似乎沒有它正常工作。

如果有人有更好的建議,我很高興! (是的,兩個感嘆號:))