Alertas Pro no Xamarin.iOS

Como o iOS não tem alertas síncronos, normalmente para receber a entrada do usuário, você tinha que anexar o manipulador ao evento “Clicado”. Mas, como Xamarin trouxe magia assíncrona para o dinossauro iOS, podemos fazer isso:

public Task<int> ShowCookCourseAlert()
{
var tcs = new TaskCompletionSource<int>();

UIApplication.SharedApplication.InvokeOnMainThread(new NSAction(() => {
UIAlertView alert = new UIAlertView("title", "message", null, "Cancel","OK" );
alert
.Clicked += (sender, buttonArgs) => tcs.SetResult(buttonArgs.ButtonIndex);
alert
.Show();
}));

return tcs.Task;
}

E então use este método como este:

int choice = await ShowCookCourseAlert();
Debug.WriteLine(choice);