我正在研究一个包含两个部分的tableview。我想在第二节标题中添加一个headerView。
我已经实现了以下代码。它会调用TitleForHeader
,但遗憾的是,GetHeightForHeader
和GetViewForHeader
都没有被调用。任何人都有任何线索?
public override string TitleForHeader (UITableView tableView, nint section)
{
if (section == 0)
{
return "Details";
}
if (section == 1)
{
return "Settings";
}
return "";
}
public override nfloat GetHeightForHeader(UITableView tableView, nint section)
{
if (section == 0)
{
return 0.0001f;
}
if (section == 1)
{
return 100.0f;
}
return UITableView.AutomaticDimension;
}
public override UIView GetViewForHeader(UITableView tableView, nint section)
{
if (section == 1) {
UIView headerView = new UIView (new CGRect (0, 0, (float)tableView.Bounds.Width, (float)tableView.SectionHeaderHeight));
headerView.BackgroundColor = UIColor.Black;
return headerView;
}
else {
return null;
}
}
答案 0 :(得分:3)
我遇到同样的问题我刚刚意识到我正在设置委托和源代码:
Table.Delegate = new TableDelegate(this); //remove this bit
Table.Source = new TableSource<string>(list, Table);
我意识到我应该只使用UITableViewSource而不是同时设置它们。
UITableViewSource
替换了以下两个类,它们仍然可以在Xamarin.iOS中使用,但通常不需要:
UITableViewDataSource
- 在Xamarin.iOS中作为抽象类建模的Objective-C协议。必须进行子类化以提供包含每个单元格视图的表格,以及有关页眉,页脚以及表格中行和节的数量的信息。
UITableViewDelegate
- 在Xamarin.iOS中作为类建模的Objective-C协议。处理选择,编辑功能和其他可选表格功能。
我刚刚将行选择的方法移到我的TableSource
中,它现在调用TitleForHeader
和GetViewForHeader
方法(它们不是互斥的)和仅设置来源没有代表。
答案 1 :(得分:0)
出现同样的问题,我忘了在viewDidLoad中设置委托
public override void ViewDidLoad()
{
base.ViewDidLoad();
TableView.DataSource = new YourViewControllerTableDataSource();
TableView.Delegate = new YourViewControllerTableDelegate();
}