使用MonoTouch.Dialog
我添加了StyledStringElement
元素。MonoTouch.Dialog:元素中文本的更新
有檢索需要更新的詳細信息後臺任務的element.Value
有沒有辦法迫使元素有它的文字更新element.Value
更新後?
伊恩
使用MonoTouch.Dialog
我添加了StyledStringElement
元素。MonoTouch.Dialog:元素中文本的更新
有檢索需要更新的詳細信息後臺任務的element.Value
有沒有辦法迫使元素有它的文字更新element.Value
更新後?
伊恩
如果您想更新此元素的元素,那麼你可以使用類似:
public class MyStyledStringElement {
public void SetValueAndUpdate (string value)
{
Value = value;
if (GetContainerTableView() != null) {
var root = GetImmediateRootElement();
root.Reload (this, UITableViewRowAnimation.Fade);
}
}
}
的變化將是載入一切和更新一次(即迭代的root.Reload
每Element
)。
我已經將「this.PrepareCell(cell)」添加到SetValueAndUpdate方法中並且可以工作,但我仍然認爲還有另一個更好的選項來檢測「caption」的變化並調用this.PrepareCell(cell); 。
public void UpdateCaption(string caption) {
this.Caption = caption;
Console.WriteLine ("actualizando : " + Caption);
UITableViewCell cell = this.GetActiveCell();
if (cell != null) {
this.PrepareCell (cell);
cell.SetNeedsLayout();
}
}
另一種方法來更新標籤是從StyledStringElement
或StringElement
派生並直接在細胞內刷新DetailTextLabel:
class UpdateableStringElement : StringElement
{
public UpdateableStringElement(string name): base (name)
{
}
UILabel DetailText = null;
public void UpdateValue(string text)
{
Value = text;
if (DetailText != null)
DetailText.Text = text;
}
public override UITableViewCell GetCell(UITableView tv)
{
var cell = base.GetCell(tv);
DetailText = cell.DetailTextLabel;
return cell;
}
}
取而代之的Value
屬性,您ç然後使用UpdateValue
方法:
var element = new UpdateableStringElement("demo");
SomeEventOfYours += delegate {
element.UpdateValue(LocalizedValue);
};
如何以編程方式遍歷元素? – BRogers
這不適用於我,Caption值不會更新。 我有一個非常特殊的情況下類似的問題。當我添加了元素後,我改變了標題屬性沒有更新「標題」標籤。爲什麼?,因爲元素只是在屏幕的底部,並不完全不可見控制器。所以,如果我向上滾動tableview使邊框元素可見,標題看起來不會更新。我必須拉下tableview才能使border元素完全不可見以強制更新。 – rolivares
很難說沒有看到一些代碼(你應該創建問題並提供更多的數據)。事實上,它是正確的*當屏幕外是單元格被緩存(由iOS),所以在某些時候它們將被重用(用於其他事情),當你回到它們時,它不再是同一個單元了(它已經被重新創建最新值)。這很正常。 – poupou