我使用故事板创建了一个View Controller,并在其上放置了一个UITableView。
我的问题是我无法弄清楚如何在UITableView中监听行选择。
我知道它在UITableViewController中是如何工作的。您重写RowSelected。但这是一个视图控制器的INSIDE表。
我是Xamarin的新手,这让我发疯了。我将不胜感激任何帮助。
答案 0 :(得分:1)
我更喜欢使用与此解决方案类似的东西:
public class TestTableViewSource : UITableViewSource
{
public delegate void RowSelectedEventHandler(NSIndexPath selectedIndexPath);
public event RowSelectedEventHandler RowSelectedEvent;
protected virtual void OnRowSelectedEvent(NSIndexPath selectedindexpath)
{
RowSelectedEventHandler handler = RowSelectedEvent;
if (handler != null) handler(selectedindexpath);
}
public override void RowSelected(UITableView tableView, NSIndexPath indexPath)
{
OnRowSelectedEvent(indexPath);
tableView.DeselectRow(indexPath, true);
}
public override UITableViewCell GetCell(UITableView tableView, NSIndexPath indexPath)
{
throw new NotImplementedException();
}
public override nint RowsInSection(UITableView tableview, nint section)
{
throw new NotImplementedException();
}
}
所以你可以在你的UIViewController中执行此操作:
TestTableViewSource source = new TestTableViewSource();
source.RowSelectedEvent += RowSelected;
YourTableView.Source = source;
private void RowSelected(NSIndexPath path)
{
// handle the selected row.
}
当然,通过将RowSelected提取到抽象类中可以进一步改进此解决方案,以便以后可以重用它 - 但这取决于您:)。