如何在ReactiveTableViewController中获取SelectedRow并导航到下一个控制器



目前我有一个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 StackOverflow");
}

将数据绑定到 TableView 时,正在为表视图分配一个新的 TableViewSource,这是一个具有可观察ElementSelectedReactiveTableViewSource<TSource>。您可以订阅此可观察量,以便在所选元素更改时收到通知。

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

source => source.ElementSelected.Subscribe(OnElementSelected)

此外,从此可观察量返回的object实际上是源数据中相应索引处的元素。

最新更新