【问题标题】:Xamarin iOS ViewDidAppear is not called when opening app from background从后台打开应用程序时未调用 Xamarin iOS ViewDidAppear
【发布时间】:2019-11-01 01:48:41
【问题描述】:

我是移动开发的新手。如果未启用 GPS,我想显示不同的屏幕。我已经将代码放在视图中,确实显示了大部分时间都可以使用的新屏幕。但是,当应用程序从后台返回时,不会显示新屏幕。调试后发现当应用返回前台Viewdidload/viewdidappear/控制器的构造函数没有被调用。

当应用程序从控制器的后台返回时,我可以使用一个覆盖。同样经过研究,我发现了这个链接

My Research

如果这是前进的道路,有人可以帮我将此代码转换为 Xamarin ios。

提前致谢。

【问题讨论】:

标签: ios xamarin xamarin.ios


【解决方案1】:

Xamarin IOS 中,在 ViewDidLoad 方法中添加通知,可以在 ViewDidAppear 中进行。

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

     UIApplication.Notifications.ObserveWillEnterForeground ((sender, args) => {
         Console.WriteLine("Welcome back!");
         //Add code from ViewDidAppear method here
     });
}

这里是IOS LifeCycle document.

【讨论】:

    【解决方案2】:

    您也可以使用默认通知中心,然后调用您的ViewModel 方法。

    NSNotificationCenter.DefaultCenter.AddObserver(UIScene.WillEnterForegroundNotification,
                    notification =>
                    {
                        ViewModel.ViewAppearing();
                    });
    

    奖励:

    如果您将此代码放入ViewDidLoad,那么它将添加多个观察者,这将导致观察者多次触发。 保存 NSNotificationCenter.DefaultCenter.AddObserver 返回令牌,然后在 ViewWillDisappear 中处理令牌。它现在不会被多次调用。

    【讨论】:

      猜你喜欢
      • 2013-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-08
      • 1970-01-01
      相关资源
      最近更新 更多