Другой подход, чтобы обновить ярлык будет извлечь из 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 не обновляется. У меня аналогичная проблема с очень конкретным случаем. Когда я добавил элементы, и после того, как я изменил свойство caption, это не обновление метки «caption». Почему ?, потому что элемент находится только в нижней части экрана и не является полностью невидимым для контроллера. Итак, если я просматриваю табличное представление, чтобы сделать видимым элемент границы, подпись не обновляется. Мне нужно снять табличное представление, чтобы элемент границы не был виден полностью, чтобы принудительно обновить. – rolivares
Трудно сказать, не видя кода (вы должны создать вопрос и предоставить больше данных). Тот факт, что * * правильно * при выключенном экране является то, что ячейки кэшируются (iOS), поэтому в какой-то момент они будут повторно использованы (для чего-то еще), и когда вы вернетесь к ним, это уже не та самая ячейка (она была воссоздана с помощью последние значения). Это совершенно нормально. – poupou