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