gpt4 book ai didi

ios - 关闭 View 时如何传回数据

转载 作者:行者123 更新时间:2023-11-29 10:56:17 26 4
gpt4 key购买 nike

我有一个 ViewModel,它有一个打开另一个 View 的命令:

public ICommand OpenAnotherViewCommand
{
get
{
return new MvxCommand(() => ShowViewModel<AnotherViewModel>());
}
}

到目前为止,还不错。然后在 AnotherViewModel 中,我希望能够返回到第一个 View 模型。最初我做了这样的事情:

public ICommand ReturnCommand
{
get
{
Dictionary<string, string> parameters = new Dictionary<string, string>();
// Add some stuff from this model to pass to the first view model

return new MvxCommand(() => {
ShowViewModel<FirstViewModel>(parameters);
}
}
}

我在我的第一个 View 模型中添加了一个 InitFromBundle,这也奏效了。然而,然后我意识到我原来的第一个 View 模型仍然存在(我注意到这一点是因为一些事件处理程序似乎被多次触发!)。我的 ShowViewModel 创建了一个新的 FirstViewModel,但旧的从未被销毁(现在看起来很明显)。所以 View 堆栈现在是 first -> another -> first 而它应该只是 first

因此,在面对这个问题之后,我将 ReturnCommand 中的 ShowViewModel 替换为 Close(this),现在我已经解决了导航问题而且我不会生成一长串不需要的 View 模型。但是,我失去的是将数据从 AnotherViewModel 传回第一个的能力。

那么当第二个 View 模型关闭时,如何将数据传回我的第一个 View 模型?

最佳答案

1

正如您可能已经知道的,您始终可以在 View 模型中使用一种可从另一个 View 模型访问的变量形式。例如使用静态变量。但是,我认为这不是一个好的做法,特别是当您要在整个应用程序中重复此模式时。

2

在您的情况下,我认为您可以从 MvvmCross Messenger plugin 中受益.查看 MvvmCross N+1 处的 N=9有关实现的更多信息。还提供示例源代码 here .

使用 Messenger 插件就很简单了。您只需在关闭 subview 之前发布一条消息。父 View 已经订阅接收那种消息,其余的应该是直截了当的。

关于ios - 关闭 View 时如何传回数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18216636/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com