[英]Xamarin.IOS : MVVMCross Passing parameter from view to ViewModel
[英]MvvmCross - How to make navigation call to Mvx View from UIApplication Xamarin.iOS
我的目标是在空闲超时后将用户重定向到登录屏幕。 每次点击/触摸后,我都有这段代码可以倒计时。 它运作良好,但是我当前的问题是我不知道将用户重定向回登录屏幕。 由于这是MvvmCross 4.4项目,因此无需寻找太多文档。 如果我还可以获得Android的示例代码,那将非常有帮助。 我会感激的
下面是我放在Main.cs中的代码
public class Application{
static void Main(string[] args){
//UIApplication.Main(args, null, "AppDelegate");
UIApplication.Main(args, "MyApplication", "AppDelegate");
}
}
//DELEGATE
[Register("MyApplication")]
public class MyApplication : UIApplication {
public override void SendEvent(UIEvent uievent) {
base.SendEvent(uievent);
var allTouches = uievent.AllTouches;
if (allTouches.Count > 0) {
var phase = ((UITouch)allTouches.AnyObject).Phase;
if (phase == UITouchPhase.Began || phase == UITouchPhase.Ended)
ResetIdleTimer();
}
}
NSTimer idleTimer;
void ResetIdleTimer() {
if (idleTimer != null) {
idleTimer.Invalidate();
idleTimer.Dispose();
}
idleTimer = NSTimer.CreateScheduledTimer(TimeSpan.FromMinutes(0.5), TimerExceeded);
}
void TimerExceeded(NSTimer obj) {
MvxiOSToastService toastService = new MvxiOSToastService();
toastService.DisplayMessageAndDoSomething("You are going to be timed out.","Idle time exceeded.", RedirectToLogin);
Console.WriteLine("idle time exceeded");
}
void RedirectToLogin() {
var window = UIApplication.SharedApplication.KeyWindow;
var vc = window.RootViewController;
//ERROR HERE
var nextVC = new LoginView();
vc.ShowViewController(nextVC, this);
//----------
}
}
您需要解析视图展示器的实例,并从那里获取当前显示的视图。 一旦有了它,就可以访问ViewModel对象并进行以下调用以使用MvvmCross导航。
如果您有权访问RootViewController
则
void RedirectToLogin() {
var window = UIApplication.SharedApplication.KeyWindow;
var vc = window.RootViewController;
var mvxView = vc as IMvxIosView;
var vm = mvxView.ViewModel;
vm.ShowViewModel<TViewModel>();
}
https://www.mvvmcross.com/documentation/fundamentals/view-presenters
ShowViewModel<TViewModel>()
解决您的导航服务实例,并使用该实例对您的登录屏幕进行导航调用。
所以像这样:
Mvx.Resolve<IMvxNavigationService>().Navigate<LoginViewModel>();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.