Onappearing не работает, когда модальная страница появляется в Xamarin iOS

У меня есть метод 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() не запускается.

2 ответа

Пожалуйста, не могли бы вы показать пример своего кода?

Вы можете попробовать следующую попытку, чтобы просмотреть любую ошибку, которая происходит:

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

            }
            catch (Exception Ex)
            {
                Debug.WriteLine(Ex.Message);
            }
}

У вас может быть правда с обновлением версии Xamarin Forms до последней версии, чтобы проверить, работает ли она.

Я проверил последнюю версию Xamarin Forms( 5.0.0.1931) и iOS( 14.4), он работает так, как ожидалось, независимо от TabbedPageили же ContentPage(Дочерняя страница TabbedPage).

На основе этого официального образца для изменения кода для тестирования.

  • Шаг первый: нажмите кнопку OnUpcomingAppointments , чтобы перейти на следующую страницу.

  • Шаг второй: нажмите кнопку « Назад» , затем вернитесь к 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
Другие вопросы по тегам