MT.Dから派生したコントロールがありStringElement
ます。要素は空白/空Caption
で作成でき、ユーザーが別のコントロールにテキストを追加すると後で更新されます。Caption
はMT.DElement
クラスのフィールドであり、これを設定しても、関連するコントロールは自動的に更新されません。そのため、コントロールを更新するために、ベースフィールドを更新するプロパティを作成してから、コントロールを更新しようとしました。
public new string Caption {
get {
return base.Caption;
}
set {
base.Caption = value;
var cell = GetActiveCell();
if (cell != null) {
cell.TextLabel.Text = value;
}
}
}
残念ながら、UIは新しい値で更新されていません。デバッガーを使用すると、新しい値が正しく設定されていることがわかりますが、テキストが表示されていません。空白以外のコントロールを作成すると、Caption
正しく表示されます。ImageView
同様のアプローチを使用して、正しく機能するコントロールを更新します。
private void SetUiState(){
var cell = this.GetActiveCell();
if (cell != null) {
var imgView = cell.ImageView;
if (imgView != null) {
imgView.Image = _isEnabled ? _enabledImage : _disabledImage;
}
cell.SelectionStyle = _isEnabled ? UITableViewCellSelectionStyle.Blue : UITableViewCellSelectionStyle.None;
}
}
なぜそれが細胞のために機能しないのか考えはありTextLabel
ますか?