从后台打开应用时,未调用Xamarin iOS ViewDidAppear

时间:2019-06-18 12:04:51

标签: ios xamarin xamarin.ios

我是移动开发的新手。如果未启用GPS,我想显示其他屏幕。我把代码放在视图中的确确实显示了大多数情况下都能正常工作的新屏幕。但是,当应用程序从后台返回时,不会显示新屏幕。调试后,我发现当应用程序返回到前台时,不会调用Viewdidload / viewdidappear /控制器的构造函数。

当应用从控制器上的后台返回时,是否有一个我可以使用的替代。经过研究,我找到了这个链接

My Research

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

谢谢。

2 个答案:

答案 0 :(得分: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.

答案 1 :(得分:0)

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

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

奖金:

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