Элементы MonoTouch Dialog не обновляются и не перерисовываются - PullRequest
3 голосов
/ 20 марта 2012

У меня есть следующее в разделе:

            _favElement = new StyledStringElement (string.Empty);
            _favElement.Alignment = UITextAlignment.Center;

            if (_room.IsFavourite) {
                _favElement.Image = UIImage.FromBundle ("Images/thumbs_up.png");
                _favElement.Caption = "Unmark as Favourite";
            } else {
                _favElement.Image = null;
                _favElement.Caption = "Mark as Favourite";
            }

            _favElement.Tapped += favElement_Tapped;

Затем, когда я нажимаю элемент, я хочу, чтобы произошло следующее:

        private void favElement_Tapped ()
        {
            if (_room.IsFavourite) {
                _favElement.Image = null;
                _favElement.Caption = "Mark as Favourite";
            } else {
                _favElement.Image = UIImage.FromBundle ("Images/thumbs_up.png");
                _favElement.Caption = "Unmark as Favourite";
            }   

            _room.IsFavourite = !_room.IsFavourite;
        }

Однако изображение и текст не изменяются в реальном элементе при касании элемента. Есть ли метод обновления или что-то, что должно быть вызвано? Я также попытался изменить Accessory на Tapped, и ничего не изменилось. Свойства, указанные ниже, отражают правильные значения.

Ответы [ 2 ]

8 голосов
/ 20 марта 2012

Альтернативой перезагрузке UITableView является перезагрузка Element с использованием следующего кода (скопировано с Touch.Unit ):

if (GetContainerTableView () != null) {
    var root = GetImmediateRootElement ();
    root.Reload (this, UITableViewRowAnimation.Fade);
}
6 голосов
/ 20 марта 2012

при условии, что ваш код находится в DialogViewController, добавьте это

this.ReloadData();

но в вашем случае я рекомендую вам использовать BooleanImageElement

...