我是移动开发的新手。如果未启用GPS,我想显示其他屏幕。我把代码放在视图中的确确实显示了大多数情况下都能正常工作的新屏幕。但是,当应用程序从后台返回时,不会显示新屏幕。调试后,我发现当应用程序返回到前台时,不会调用Viewdidload / viewdidappear /控制器的构造函数。
当应用从控制器上的后台返回时,是否有一个我可以使用的替代。经过研究,我找到了这个链接
如果这是前进的道路,有人可以帮助我将此代码转换为Xamarin ios。
谢谢。
答案 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
});
}
答案 1 :(得分:0)
您还可以使用默认的通知中心,然后调用您的ViewModel
方法。
NSNotificationCenter.DefaultCenter.AddObserver(UIScene.WillEnterForegroundNotification,
notification =>
{
ViewModel.ViewAppearing();
});
奖金:
如果将这段代码放在ViewDidLoad
中,它将添加多个观察者,这将导致观察者多次触发。
保存NSNotificationCenter.DefaultCenter.AddObserver
返回令牌,然后在ViewWillDisappear
中处置令牌。现在不会再调用它了。