И OnApperearing, и OnDisappearing не будут вызываться, когда вы добавляете всплывающее окно в представлении.
В Документ Apple , оно говорит:
viewWillAppear:
Этот метод вызывается до того, как представление контроллера представления собирается добавить в иерархию представления, и до того, как настроены анимации для отображения представления.
В Android:
OnCreate
OnCreate - первый метод, который вызывается при создании действия.
Добавление всплывающего окна или удаление всплывающего окнане создавать или удалять новый вид или добавлять / удалять вид в / из иерархии.Таким образом, эти методы жизненного цикла не будут вызываться в это время.
Решение:
О том, как установить текст кнопки после выбора во всплывающем окне, я согласен с *Ответ 1029 *, позвольте мне уточнить его с помощью кода.
1.Использование eventHandle
:
На всплывающей странице определите EventHandler
:
public EventHandler SelectedStringChanged { get; set; }
В RadioButton_Clicked
добавьте строку для вызова SelectedStringChanged:
private void RadioButton_Clicked(object sender, System.EventArgs e)
{
var rb = sender as RadioButton;
var selection = rb.BindingContext as multi_selection;
if (selection != null && selection.is_selected == true)
{
selection.is_selected = false;
}
else
if (selection != null && selection.is_selected == false)
{
selection.is_selected = true;
TestingClass.multiselection.Add(selection);
}
//Add this line
SelectedStringChanged(sender, e);
}
На фоновой странице создайте метод для работы с btn.text:
private void Handle_SelectedStringChanged(object sender, EventArgs rags)
{
// ... your code
for (int i = 0; i < TestingClass.multiselection.Count; i++)
{
if (TestingClass.multiselection[i].is_selected)
btn.Text += TestingClass.multiselection[i].description;
}
}
Вметод popup, используйте метод Handle_SelectedStringChanged
:
private async void OnOpenPupup(object sender, EventArgs e)
{
_loginPopup.SelectedStringChanged += Handle_SelectedStringChanged;
await PopupNavigation.Instance.PushAsync(_loginPopup);
}
MessageingCenter
также будет работать.
На фоновой странице:
MessagingCenter.Subscribe<MainPage>(this, "stringSelected", (sender) => {
// do something whenever the "stringSelected" message is sent
for (int i = 0; i<TestingClass.multiselection.Count; i++)
{
if (TestingClass.multiselection[i].is_selected)
btn.Text += TestingClass.multiselection[i].description;
}
});
На всплывающей странице:
private void RadioButton_Clicked(object sender, System.EventArgs e)
{
var rb = sender as RadioButton;
var selection = rb.BindingContext as multi_selection;
if (selection != null && selection.is_selected == true)
{
selection.is_selected = false;
}
else
if (selection != null && selection.is_selected == false)
{
selection.is_selected = true;
TestingClass.multiselection.Add(selection);
}
MessagingCenter.Send<MainPage>(this, "stringSelected");
}
См .: сообщения-центр