如何从 Xamarin.ios 知道哪个页面处于活动状态
How to know From Xamarin.ios which Page is active
有什么解决方案可以知道内容页面是否处于活动状态或在 AppDelegate.cs 中被调用?
因为 iv 安装了一个插件 NFC,我只想在 NFC.xaml 页面处于活动状态时激活该插件,而不是在启动应用程序时。
在此代码中,我试图仅在页面 NFC.xaml 处于活动状态或被调用时开始会话
public partial class AppDelegate : global::Xamarin.Forms.Platform.iOS.FormsApplicationDelegate
{
public override bool FinishedLaunching(UIApplication app, NSDictionary options)
{
// if(App.Current==NFC.xaml) any way to know the content page ?
Session = new NFCNdefReaderSession(this, null, true);
Session?.BeginSession();```
}
}
当页面处于活动状态时 OnAppearing 方法将被触发。
所以我们可以在这里使用 MessagingCenter
。
NFC.xaml.cs
protected override void OnAppearing()
{
base.OnAppearing();
MessagingCenter.Send<object>(this,"Hi");
}
AppDelegate.cs
public partial class AppDelegate : global::Xamarin.Forms.Platform.iOS.FormsApplicationDelegate
{
public override bool FinishedLaunching(UIApplication app, NSDictionary options)
{
MessagingCenter.Subscribe<object>(this, "Hi", (obj) =>
{
Session = new NFCNdefReaderSession(this, null, true);
Session?.BeginSession();
});
}
}
有什么解决方案可以知道内容页面是否处于活动状态或在 AppDelegate.cs 中被调用? 因为 iv 安装了一个插件 NFC,我只想在 NFC.xaml 页面处于活动状态时激活该插件,而不是在启动应用程序时。 在此代码中,我试图仅在页面 NFC.xaml 处于活动状态或被调用时开始会话
public partial class AppDelegate : global::Xamarin.Forms.Platform.iOS.FormsApplicationDelegate
{
public override bool FinishedLaunching(UIApplication app, NSDictionary options)
{
// if(App.Current==NFC.xaml) any way to know the content page ?
Session = new NFCNdefReaderSession(this, null, true);
Session?.BeginSession();```
}
}
当页面处于活动状态时 OnAppearing 方法将被触发。
所以我们可以在这里使用 MessagingCenter
。
NFC.xaml.cs
protected override void OnAppearing()
{
base.OnAppearing();
MessagingCenter.Send<object>(this,"Hi");
}
AppDelegate.cs
public partial class AppDelegate : global::Xamarin.Forms.Platform.iOS.FormsApplicationDelegate
{
public override bool FinishedLaunching(UIApplication app, NSDictionary options)
{
MessagingCenter.Subscribe<object>(this, "Hi", (obj) =>
{
Session = new NFCNdefReaderSession(this, null, true);
Session?.BeginSession();
});
}
}