顯示模態警報對話方塊

通常的做法是使用 NSRunLoop 來顯示模態 UIAlertView 以阻止程式碼執行,直到在 iOS 中處理使用者輸入為止; 直到 Apple 釋出 iOS7,它打破了現有的幾個應用程式。幸運的是,有一種更好的方法可以使用 C#的 async / await 來實現它。

這是利用 async / await 模式顯示模態 UIAlertView 的新程式碼:

Task ShowModalAletViewAsync (string title, string message, params string[] buttons)
{
    var alertView = new UIAlertView (title, message, null, null, buttons);
    alertView.Show ();
    var tsc = new TaskCompletionSource ();

    alertView.Clicked += (sender, buttonArgs) => {
        Console.WriteLine ("User clicked on {0}", buttonArgs.ButtonIndex);
        tsc.TrySetResult(buttonArgs.ButtonIndex);
    };
    return tsc.Task;
}

//Usage
async Task PromptUser() {
    var result = await ShowModalAletViewAsync 
               ("Alert", "Do you want to continue?", "Yes", "No"); //process the result
}