0

我有一个 onappearing 方法,当页面在 Xamarin iOS 中弹出时不会触发,但在 Xamarin Android 中可以正常工作。谁能帮我解决这个问题。谢谢你。

第 1 页(标签页)

 protected override void OnAppearing()
    {
        base.OnAppearing();

            if (CVItems.SelectedItem != null)
                CVItems.SelectedItem = null;
    }

    private async void CVItems_SelectionChangedAsync(object sender, SelectionChangedEventArgs e)
    {
        var selecteditem = e.CurrentSelection.First() as Item;
        var detailPage = new AdPage(selecteditem);
        detailPage.BindingContext = selecteditem;
        await Navigation.PushModalAsync(detailPage);             
    }

第 2 页(模态页面)

    private async void poppage_Tapped(object sender, EventArgs e)
    {
        await Navigation.PopModalAsync();
    }

当点击集合视图中的项目时,会打开模式页面,然后当我弹回选项卡式页面时,不会触发 onappearing() 方法。

4

2 回答 2

0

请您展示您的代码示例吗?

您可以尝试以下 try catch 来查看正在发生的任何错误:

public void OnAppearing() //could add a protected override
{
            try
            {
                OnAppearing();

            }
            catch (Exception Ex)
            {
                Debug.WriteLine(Ex.Message);
            }
}
于 2021-02-11T11:37:05.383 回答
0

您可以通过将 Xamarin Forms 的版本更新到最新版本来检查它是否有效。

我已经签入了最新版本的 Xamarin Forms( 5.0.0.1931) 和 iOS( 14.4),无论是(TabbedPage 的子页面),它都能按预期TabbedPage工作ContentPage

基于此官方示例修改代码进行测试。

  • 第一步:按OnUpcomingAppointments按钮到下一页。

  • 第二步:按Back按钮,然后返回SchedulePage

在此处输入图像描述

标签页

public partial class MainPage : TabbedPage
{
    public MainPage ()
    {
        InitializeComponent ();
    }

    protected override void OnAppearing()
    {
        base.OnAppearing();
        Console.WriteLine("TabbedPage OnAppearing");
    }
}

计划页面

public partial class SchedulePage : ContentPage
{
    public SchedulePage ()
    {
        InitializeComponent ();
    }

    async void OnUpcomingAppointmentsButtonClicked (object sender, EventArgs e)
    {
        await Navigation.PushModalAsync (new UpcomingAppointmentsPage ());
    }

    protected override void OnAppearing()
    {
        base.OnAppearing();
        Console.WriteLine("SchedulePage OnAppearing");
    }
}

输出:

2021-02-12 11:03:03.800726+0800 TabbedPageWithNavigationPageiOS[5537:75334] TabbedPage OnAppearing
2021-02-12 11:03:03.801024+0800 TabbedPageWithNavigationPageiOS[5537:75334] SchedulePage OnAppearing
于 2021-02-12T03:09:03.673 回答