ios - 表格刷新后MVVMCross iOS重新选择表格行

标签 ios xamarin.ios mvvmcross

有谁知道如何让 iOS 表格 View 在表格刷新后可视化地重新选择一行?

这是我当前的实现:

主视图

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

    var source = new MvxSimpleTableViewSource(MainTableView, MainInspectionCell.Key, MainInspectionCell.Key);
    MainTableView.Source = source;
    var set = this.CreateBindingSet<MainView, MainViewModel>();
    set.Bind(source).To(vm => vm.Inspections);
    set.Bind(source).For(s => s.SelectionChangedCommand).To(vm => vm.ItemSelectedCommand);
    set.Bind(source).For(s => s.SelectedItem).To(vm => vm.SelectedInspection);
....
    set.Apply();

    MainTableView.ReloadData();
}

主视图模型

我有一条消息会在同步完成后发送出去,处理方式如下:

private async void OnSyncUpdate(UpdatedInspectionsMessage message)
{
    var updatedInspections = await inspectionManager.GetInspectionsAsync(cancellationToken);
    Inspections = new ObservableCollection<Inspection>(updatedInspections);
    ItemSelectedCommand.Execute(SelectedItem);
}

这里的想法是......当同步完成并且我的表格刷新以进行行选择并重新突出显示我选择的项目时。现在发生的是我选择的行在刷新之前是灰色的。刷新后,我的 SelectedItem 仍处于填充状态,但该行不再是灰色。

有什么想法吗?

最佳答案

所以我通过发布一条新消息来让它工作。我想知道是否有更简洁的方法来执行此操作,但这对我有用。

当我在 ViewModel 中完成刷新时,我会执行以下操作:

InvokeOnMainThread(async () =>
{
    await Task.Delay(250, cancellationToken);
    ItemSelectedCommand.Execute(newSelected);
    messenger.Publish(new DoneUpdatingInspectionsMessage(this));
});

然后在我的 iOS View 中,我订阅了一个 DoneUpdatingInspectionsMessage 来执行此操作:

var path = NSIndexPath.FromRowSection(MainViewModel.Inspections.IndexOf(MainViewModel.SelectedInspection), 0);
MainTableView.SelectRow(path, true, UITableViewScrollPosition.None);

注意:我需要构建一个延迟,因为它在我的加载指示器消失之前触发,这导致该行未显示为选中状态。

关于ios - 表格刷新后MVVMCross iOS重新选择表格行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28333248/

相关文章:

ios - 如何访问 SLComposeViewController 中的 POST 按钮?

ios - 如何处理 UISplitView 嵌套 Controller 中的点击事件

iphone - 使用单点触控的推送通知服务

c# - AsParallel 使 MonoTouch 应用程序崩溃

c# - 在 MVVM Cross ViewModel 之间传递简单参数

ios - 添加到 Apple Wallet 时,您可以控制通行证的顺序吗?

ios - objective c 将特殊 URL 转换为 NSURL

ios - 如何克隆 Swift 泛型数组?

c# - MvvmCross Windows Store 如何将不同的 ViewModel 绑定(bind)到 Appbar?

android - 使用 MvxAdapter 时出现异常