如何在 Reactive Table View Controller 中获取选定行并导航到下一个控制器

How to get SelectedRow in ReactiveTableViewController and navigate to next controller

目前我有一个 ReactiveTableViewController,它使用 ReactiveUI 绑定到 ReactiveCell。这是按以下方式链接在一起的。

public class ServicesView : ReactiveTableViewController<ServicesViewModel> {
public ServicesView() : base()
{
}

public override void ViewDidLoad()
{
    base.ViewDidLoad();

    SetUpUserInterface();

    SetTableViewProperties();

    this.WhenActivated(disposable =>
    {
        TableView.Delegate = this;
        this.TableView.RegisterNibForCellReuse(RxCell.Nib, RxCell.Key);
        //this.WhenAnyValue(view => view.ViewModel.Services).BindTo<ServiceEntryModel, RxCell>(this.TableView, RxCell.Key, 50, null); // does not work
        TableView.Source = new ReactiveTableViewSource<ServiceEntryModel>(TableView, ViewModel.Services, RxCell.Key, 50f, null); // also not working
    }
}}

当覆盖以下内容时,在 UITableView 中选择一行时 Console.WriteLine 将永远不会被调用,有人可以解释为什么会这样吗?将不胜感激,感谢您的阅读。

public override void RowSelected(UITableView tableView, NSIndexPath indexPath)
{
     base.RowSelected(tableView, indexPath);

     Console.WriteLine("Hi Whosebug");
}

将数据绑定到 TableView 时,一个新的 TableViewSource 被分配给 TableView,这是一个 ReactiveTableViewSource<TSource>,它有一个 ElementSelected 可观察对象。您可以订阅此 observable 以获得所选元素更改的通知。

因此您可以选择将 TableView.Source 转换为 ReactiveTableViewSource<TSource> 并自己订阅 ElementSelected。或者您可以为您的绑定提供一个 initSource 委托:

source => source.ElementSelected.Subscribe(OnElementSelected)

另外,这个observable返回的object实际上是源数据中对应索引处的元素