我发现使用Objective-c提出了这个问题,但无法将其转换为C#
例如
open-specific-view-when-opening-app-from-notification
基本上我想这样做:
public override void ReceivedRemoteNotification (UIApplication application, NSDictionary userInfo)
{
string alert = (aps[new NSString("alert")] as NSString).ToString();
Debug.WriteLine ("I want to open a specific ViewController and pass in my alert");
}
我实际上是使用mvvmcross来管理我的视图导航。因此,理想情况下,我想以某种方式使用mvvmcross来实现此导航。在mvvmcross中,我将通过执行以下操作导航至ViewControler:
this.ShowViewModel<SpecificControllerViewModel>();
谢谢
最佳答案
如果您查看ShowViewModel()的参数,它可以将值传递给视图模型
这是here以及示例
您可以通过几种方式实现这一目标。
您可以使用自定义消息。视图模型可以注册以接收消息,然后从ReceivedRemoteNotification
发送该消息。阅读有关MvvmCross中信使的here。
或者,您可以调用ShowViewModel。如果查看ShowViewModel是如何实现的here,它将使用IMvxViewDispatcher
单例服务,因此您可以使用以下实用程序方法:
static void ShowViewModel<T>(object parameter) where T : IMvxViewModel
{
var viewDispatcher = Mvx.Resolve<IMvxViewDispatcher>();
var request = MvxViewModelRequest.GetDefaultRequest(typeof(T));
request.ParameterValues = ((object)parameter).ToSimplePropertyDictionary();
viewDispatcher.ShowViewModel(request);
}
我在博客here上发布了有关此内容的信息。
我认为即使在应用未运行时收到通知的情况下,第二种方法也可以工作(由
FinishedLaunching
接收)关于c# - Xamarin/Mvvmcross:收到iOS推送通知时,打开另一个 View Controller ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26439078/