Search code examples
ios.netpopupmaui

Displayalert is not showing on MopupServices Popup Page in .net Maui in IOS


Below code is not showing displayalert on popuppage in iOS. In android it is working properly. I am using Mopups.Pages.PopupPage I am using mvvm.

<?xml version="1.0" encoding="utf-8" ?>
<pages:PopupPage
xmlns:pages="clr-namespace:Mopups.Pages;assembly=Mopups" 
xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:animations="clr-namespace:Mopups.Animations;assembly=Mopups"
xmlns:ffimage="clr-namespace:FFImageLoading.Maui;assembly=FFImageLoading.Maui"
xmlns:FFImgLoad="clr-namespace:FFImageLoading.Maui;assembly=FFImageLoading.Maui"
x:Class="Gaibo.Pages.CostPopupPage"
BackgroundColor="#80000000"
>
   <pages:PopupPage.Animation>
    <animations:ScaleAnimation
    PositionIn="Center"
    PositionOut="Center"
   ScaleIn=".7"
    ScaleOut="0.7"
       
 EasingIn="Linear"/>
</pages:PopupPage.Animation>
<StackLayout HorizontalOptions="CenterAndExpand" Margin="10"
         VerticalOptions="CenterAndExpand">

   
            <Button Grid.Row="3" CornerRadius="20" Padding="0" Text="Submit" VerticalOptions="CenterAndExpand" HeightRequest="45" Style="{StaticResource AllSubmitBtnStyle}" Command="{Binding SubmitCostCommand}"/>
       
</StackLayout>
</pages:PopupPage>

code for SubmitCostCommand command

public class CampaignDetailsViewModel
{
   private async Task SubmitCostCommandClicked()
   {

    await App.Current.MainPage.DisplayAlert("", " Thank you for submitting Post Social Link/s.", "Ok");

   }
}

in cs file

public CostPopupPage (CampaignDetailslstData CampaignData)
{
     InitializeComponent();
    var vm = new CampaignDetailsViewModel();
}

Solution

  • This is known issue with Mopups. In order to display your alert on top of a mopup, you need to invoke the alert from mopup page itself, not from Mainpage.

    private async Task SubmitCostCommandClicked()
    {
    
        var topPage = Mopups.Services.MopupService.Instance.PopupStack[^1];
            await topPage.DisplayAlert("Confirm", "Are you sure you want to cancel?", "Yes", "No")
    
    }