亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何從 UIApplication Xamarin.iOS 對 Mvx View 進行導航調用

如何從 UIApplication Xamarin.iOS 對 Mvx View 進行導航調用

C#
幕布斯6054654 2023-05-14 16:13:00
我的目標是在空閑超時后將用戶重定向回登錄屏幕。每次點擊/觸摸后,我都有這段代碼進行倒計時。它運行良好,但我目前的問題是我不知道將用戶重定向回登錄屏幕。由于這是 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);          //----------    }  }  
查看完整描述

1 回答

?
幕布斯7119047

TA貢獻1794條經驗 獲得超8個贊

您需要解析視圖展示器的實例并從那里獲取當前呈現的視圖。一旦你有了它,你就可以訪問 ViewModel 對象并進行以下調用以使用 MvvmCross 導航。


如果您有權訪問RootViewControllerthen


void RedirectToLogin() {  

    var window = UIApplication.SharedApplication.KeyWindow;  

    var vc = window.RootViewController;  


    var mvxView = vc as IMvxIosView;  

    var vm = mvxView.ViewModel;


    vm.ShowViewModel<TViewModel>();

}

MvvmCross 在 5 之前

https://www.mvvmcross.com/documentation/fundamentals/view-presenters


ShowViewModel<TViewModel>()

Mvvm 交叉 5+

解析導航服務的一個實例,并使用它來對登錄屏幕進行導航調用。


所以像:


Mvx.Resolve<IMvxNavigationService>().Navigate<LoginViewModel>();


查看完整回答
反對 回復 2023-05-14
  • 1 回答
  • 0 關注
  • 164 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號