如何在 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
实际上是源数据中对应索引处的元素
目前我有一个 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
实际上是源数据中对应索引处的元素