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();