C# MonoTouch:如何使用UITableViewController作为UITableView的数据源?
我正在使用带有静态内容的故事板和表视图。在内部,似乎C# MonoTouch:如何使用UITableViewController作为UITableView的数据源?,c#,xamarin.ios,uikit,C#,Xamarin.ios,Uikit,我正在使用带有静态内容的故事板和表视图。在内部,似乎UITableViewController隐式地成为UITableView的源 如果我现在想影响静态内容,我必须重写表源的方法。在ObjectiveC中,我可以 -(NSString*)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section { if (section == 0) return @"HELLO!";
UITableViewController
隐式地成为UITableView
的源
如果我现在想影响静态内容,我必须重写表源的方法。在ObjectiveC中,我可以
-(NSString*)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
if (section == 0)
return @"HELLO!";
else {
return [super tableView:tableView titleForHeaderInSection:section];
}
}
在我的控制器中,该方法将被重写。但在MonoTouch中,这不起作用。
请注意,我不希望创建委托或数据源的新实例。对于静态单元格,控制器是源/委托。在Objective中,这是通过使控制器实现相应的协议来实现的
以下是我提出的与此主题相关的问题,但现在我无法将解决方案转换为MonoTouch:
在Mono Touch中,您必须创建一个数据源代理 就像这篇博文中的演示:
如果要自定义标题部分的标题,只需覆盖TableViewDelegate中的titleForHeaderInSection。在Mono Touch中,您必须创建数据源代理 就像这篇博文中的演示:
如果要自定义标题部分的标题,只需覆盖TableViewDelegate中的titleForHeaderInSection即可。在Xamarin网站上的精彩教程中找到了解决方案: “
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";
}
}
在Xamarin网站上的精彩教程中找到了解决方案: “
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";
}
}
我知道。但在特定情况下,UITableViewController是委托。所以我不想再创造一个。我只是想告诉我的控制器,它实现了协议。在.NET中,不可能有一个由多个类继承的类。仅具有多个接口,但UITableViewDataSource不是一个接口。因此,您必须为UITableView创建一个单独的委托。在Objective-C中,可以有一个实现多个协议的类。另请参阅我知道的“协议深入研究”文档。但在特定情况下,UITableViewController是委托。所以我不想再创造一个。我只是想告诉我的控制器,它实现了协议。在.NET中,不可能有一个由多个类继承的类。仅具有多个接口,但UITableViewDataSource不是一个接口。因此,您必须为UITableView创建一个单独的委托。在Objective-C中,可以有一个实现多个协议的类。另请参阅本文档“Protocols Deep dive”,我使用
[Export(“tableView:didSelectRowAtIndexPath:”)]
尝试过它,但从未调用过它。您是否添加了其他内容?@测试您必须将控制器设置为WeakDelegate
或WeakSource
-不记得确切的属性。WeakDelegate
对我说了些什么。下次需要时我会尝试。我用[Export(“tableView:DidSelectRowatineXpath:”)]
尝试过,但从未调用过。您是否添加了其他内容?@测试您必须将控制器设置为WeakDelegate
或WeakSource
-不记得确切的属性。WeakDelegate
对我说了些什么。下次我需要的时候我会试试的。