Xamarin在导航返回后出现导航定位错误计数
我正在使用以下方法设置当前页面的页码:Xamarin在导航返回后出现导航定位错误计数,xamarin,xamarin.forms,Xamarin,Xamarin.forms,我正在使用以下方法设置当前页面的页码: protected override void OnAppearing() { base.OnAppearing(); // Page number _pageNumber = Navigation.NavigationStack.Count - 2; } 如果我向前导航并将新页面推到堆栈上,则一切正常: private async void btnContinue_Clicked(object sender, EventArgs
protected override void OnAppearing()
{
base.OnAppearing();
// Page number
_pageNumber = Navigation.NavigationStack.Count - 2;
}
如果我向前导航并将新页面推到堆栈上,则一切正常:
private async void btnContinue_Clicked(object sender, EventArgs e)
{
// Proceed to next view
await Navigation.PushAsync(new MainPage());
}
但是,当我从一个页面返回时,似乎在弹出上一个页面之前调用了OnAppearing()方法。因此,\u pageNumber
变量实际上是上一页的变量。我如何解决这个问题?我想把它放在构造函数中,但是NavigationStack.Count在那里总是返回0。
我的页面是动态编程的,因此,我无法将页码硬编码到页面中,因为调用了相同的页面,但值会根据页面的编号而变化。这将是一种预期效果 调用PopAsync方法时,会发生以下事件:
bool isFirstLoad = true;
protected override void OnAppearing()
{
base.OnAppearing();
if(isFirstLoad)
{
label.Text = Navigation.NavigationStack.Count.ToString();
isFirstLoad = false;
}
MessagingCenter.Subscribe<Object,int>(this, "pop", (arg, num) => {
label.Text = (num-1).ToString();
});
}
bool isFirstLoad=true;
出现时受保护的覆盖无效()
{
base.OnAppearing();
if(isFirstLoad)
{
label.Text=Navigation.NavigationStack.Count.ToString();
isFirstLoad=false;
}
订阅(这个“pop”,(arg,num)=>{
label.Text=(num-1.ToString();
});
}
当你打电话给爸爸
private async void Button_Clicked_1(object sender, EventArgs e)
{
MessagingCenter.Send<Object,int>(this, "pop", Navigation.NavigationStack.Count);
await Navigation.PopAsync();
}
private async void按钮\u单击\u 1(对象发送方,事件参数e)
{
MessagingCenter.Send(这个“pop”、Navigation.NavigationStack.Count);
等待导航。PopAsync();
}
是的,应该这样!谢谢如果你喜欢我的问题,别忘了投赞成票;)