我正在使用带有静态内容的故事板和表格视图。在内部,好像UITableViewController
隐含地成为UITableView
的来源。
如果我现在想要对静态内容施加影响,我将不得不重写表源的方法。在ObjectiveC中,我可以放置
-(NSString*)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
if (section == 0)
return @"HELLO!";
else {
return [super tableView:tableView titleForHeaderInSection:section];
}
}
在我的控制器中,该方法将被覆盖。但在MonoTouch中,这不起作用。 请注意,我不想创建委托或数据源的新实例。对于静态单元格,控制器是源/委托。在ObjectiveC中,这是通过使控制器实现相应的协议来完成的。
以下是我提出的与此主题相关的问题,但现在我无法将解决方案转换为MonoTouch:
How to override tableView:titleForHeaderInSection: to adjust section headers of static UITableViews?
答案 0 :(得分:5)
在Xamarin网站的精彩教程中找到了解决方案:{{3p>
“Export
”属性可以解决问题!
public partial class TestController : UITableViewController
{
public TestController (IntPtr handle) : base (handle)
{
}
public override void ViewDidLoad ()
{
base.ViewDidLoad ();
}
[Export("tableView:titleForHeaderInSection:")]
public string TitleForHeaderInSection(UITableView oTableView, int iSection)
{
return "TEST";
}
}
答案 1 :(得分:-1)
在Mono Touch中,您必须创建一个DataSource Delegate。
与此博文中的演示类似:http://sabonrai.wordpress.com/2009/08/28/monotouch-sample-code-uitableview/
public override string TitleForHeader (UITableView tableView, int section)
{
//do your stuff
}
如果要自定义标题部分的标题,只需覆盖TableViewDelegate中的titleForHeaderInSection。