Обновление данных заголовка TableView - PullRequest
0 голосов
/ 22 мая 2019

У меня есть табличное представление с заголовком, содержащим данные, которые заполняются из API. Мне понадобится способ обновить эти значения, если что-то изменилось (например, если они изменили фотографию своего профиля)

В настоящее время я устанавливаю исходные данные с GetViewForHeader(), но я не знаю, как можно легко обновить данные заголовка при внесении изменения.

1 Ответ

1 голос
/ 23 мая 2019

UITableView не имеет метода для перезагрузки только заголовка / заголовка ... Вы должны перезагрузить весь раздел или таблицу:

table.ReloadSections(new NSIndexSet(0), UITableViewRowAnimation.Automatic); 

Или

table.ReloadData();

Другой способ - получить ссылку на элемент управления, который вы хотите обновить:

public class TableSource : UITableViewSource
{

    public UILabel testLabel;



    public override UIView GetViewForHeader(UITableView tableView, nint section)
    {

        UILabel lab = new UILabel();

        lab.Text = "123";
        lab.Frame = new CGRect(0,0,100,50);

        //Get reference
        testLabel = lab;

        return lab;
    }

    public override nfloat GetHeightForHeader(UITableView tableView, nint section)
    {
        return 50;
    }
}

В любом месте, где вы хотите получить доступ к элементу управления:

public override void ViewDidLoad()
    {
        base.ViewDidLoad();
        // Perform any additional setup after loading the view, typically from a nib.

        UITableView table = new UITableView(View.Bounds); // defaults to Plain style
        string[] tableItems = new string[] { "Vegetables", "Fruits", "Flower Buds", "Legumes", "Bulbs", "Tubers" };

        TableSource s = new TableSource(tableItems);
        table.Source = s;
        Add(table);


        //get the reference 

        UILabel myLabel = s.testLabel;
        //update here.
    }

Я попытался позвонить SetNeedsDisplay, как упомянуто в комментарии, но я не добился успеха, я нашел код, выполненный в GetViewForHeader, однако представление не обновляется для меня, возможно, я что-то упустил, Вы можете попробовать:

 UIView v  = s.GetViewForHeader(table, 0);
 v.SetNeedsDisplay();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...